83 votes

Android - Activité de Constructeur vs onCreate

Je comprends que Android Activities ont des cycles de vie et qu' 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 l' 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 qu' onDestroy est là pour ça. Est-ce correct?

33voto

Cheryl Simon Points 25259

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.

7voto

Archimedes Trajano Points 2729

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 l' onCreate serait appelé peu de temps après.

Même si 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() et onPause() 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 un onCreate() 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

6voto

biboMandroid Points 61

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!

0voto

Pentium10 Points 68884

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X