Android - Activité de Constructeur vs onCreate
Je comprends que Android Activities
ont des cycles de vie et que onCreate
doit être remplacée et utilisé pour l'initialisation, mais ce qui se passe exactement dans le constructeur? Existe-il des cas où l'on pouvait/devait l'emporter sur la Activity
constructeur ainsi, ou si vous ne la touchez jamais?
Je suis en supposant que le constructeur ne devrait jamais être utilisée, car les références à Activities
ne sont pas nettoyés entièrement (ce qui freine le garbage collector) et que onDestroy
est là pour ça. Est-ce correct?
- Que penser du fait que Android peut détruire/recréer votre Activité à tout moment? Vous ne savez pas si le constructeur sera appelé ensuite, et même si - quel constructeur sera appelé... (la même chose s'applique à des Fragments et c'est pourquoi chaque Fragment doit mettre en œuvre un vide constructeur par défaut).
Vous devez vous connecter pour publier un commentaire.
Je ne peux pas penser à une bonne raison de faire quoi que ce soit dans le constructeur. Vous n'avez jamais construire une activité directement, de sorte que vous ne pouvez pas l'utiliser pour passer des paramètres. Généralement, il suffit de faire les choses dans onCreate.
Une bonne raison pour mettre les choses dans le constructeur comme Gili commentaire avait déclaré est l'utilisation de finale champs.
Toutefois, si vous initialisez les choses dans le constructeur, puis la durée de vie de l'objet sera un peu plus long, mais je ne pense pas que beaucoup parce que le
onCreate
serait appelé peu de temps après.Bien que c'est contre mon idéal, je dois éviter le constructeur pour l'initialisation de l'activité des membres et de s'appuyer sur
onResume()
etonPause()
pour les ressources que mon application est de traiter avec.Pour
onCreate()
j'ai l'habitude de l'utiliser pour faire afficher le mappage des variables locales. Si android-annotations déjà fait pour moi, donc j'ai rarement unonCreate()
méthode pour mon Activité. Je l'utilise toujours en Service.Cependant, si vous regardez les membres que vous avez peut-être initialisation
ils auraient un "proche" de la méthode que vous devez appeler au bon moment (onResume ou onPause)
ils seraient une partie de la vue qui signifie qu'il doit être initialisé alors onCreate doit être appelée
ils sont des constantes qui n'ont pas besoin d'être mis dans le constructeur de toute façon, juste un static final ferait. Cela comprend la Peinture et le Chemin des constantes qui peuvent être initialisé par un bloc statique
Je suis maintenant sur un cas qui doit remplacer le constructeur. En fait, j'ai quelques activités qui ont la même structure. Donc au lieu de créer de nombreuses activités, je vais créer un "Master" de l'activité et les autres vont hériter de celui-ci. J'ai donc besoin de surcharger le constructeur de l'activité enfant pour être capable d'initialiser certaines variables qui seront utilisées dans le oncreate méthodes.
En deux mots, le constructeur fait de vous simuler un "masteractivity" qui peuvent être réutilisés par d'héritage!
Vous avez besoin de surcharger le Constructeur lors de votre activité de paramètres personnalisés ou que vous souhaitez suivre les appels de classes qui hérite.
startActivityForResult
je dois inclure un constructeur privé dans mon composant personnalisé, même si cette activité ne sera jamais lancé et n'a pas de visibile éléments, je viens d'utiliser le résultat des trucs de lui.