42 votes

Règles diffinitives pour utiliser getBaseContext, getApplicationContext ou utiliser le "this" d'une activité

J'ai googlé cette question beaucoup de choses et nous avons trouvé une multitude de recommandations sur l'utilisation getBaseContext, getcontexteapplication ou une Activité propre de ce pointeur.

Trois règles qui reviennent souvent et qui semble faire beaucoup de sens sont -

  1. Pour une longue durée de vie de référence pour une contexte de l'activité getcontexteapplication doit être utilisé comme cela existe aussi longtemps que votre l'application existe
  2. Pour les contextes dont les cycles de vie sont liés à leurs activités, de leur propre contexte d'activité (ce) doit être utilisé
  3. Magasin de contexte pointeurs de manière statique avec de grandes précautions (et, si possible, pas du tout)

En supposant que ce sont correctes, qu'est-ce que l'utilisation de getBaseContext?

J'ai vu un grand nombre d'exemples où de nouvelles intentions sont créés à l'aide de -

Intent intent = new Intent(getBaseContext(), myClass.class);

Contrairement à

Intent intent = new Intent(this, myClass.class);

Qui est le bon, ou recommandé, méthode et pourquoi?

13voto

Karan Points 6418

GetBaseContext () est la méthode de ContextWrapper. Et ContextWrapper est, "Une implémentation par proxy du contexte qui délègue simplement tous ses appels à un autre contexte. Peut être sous-classée pour modifier le comportement sans changer le contexte d'origine". (selon javadocs)

Donc, ceci est utilisé pour déléguer les appels à un autre contexte.

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