2011-03-28 1 views
41

J'ai googlé cette question beaucoup et ont trouvé de nombreuses recommandations différentes sur le moment d'utiliser getBaseContext, getApplicationContext ou propre de l'activité ce aiguille.règles Diffinitive pour l'utilisation getBaseContext Android, getApplicationContext ou en utilisant un « this » de l'activité

Trois règles qui viennent souvent et semblent faire beaucoup de sens sont -

  1. Pour une référence à long terme à une activité de contexte getApplicationContext doit être utilisé comme cela existe aussi longtemps que votre application existe
  2. pour contextes dont les cycles de vie sont liés à leurs activités, leur propre contexte d'activité (ce) doit être utilisé
  3. pointeurs de contexte de magasin statiquement seulement avec une grande prudence (et, si possible, pas du tout)

En supposant que ces sont corrects, ce qui est l'utilisation de getBaseContext?

j'ai vu un grand nombre d'exemples où de nouvelles intentions créées à l'aide -

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

Contrairement à -

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

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

Répondre

13

getBaseContext() est la méthode de ContextWrapper. Et ContextWrapper est, "Proxying implémentation de Context qui délègue simplement tous ses appels à un autre Contexte.Peut être sous-classé pour modifier le comportement sans changer le Contexte d'origine." (selon javadocs)

Ceci est utilisé pour déléguer les appels à un autre contexte.

+4

Vous avez peut-être répondu à ma question mais, pour clarifier, quelle est la meilleure façon de créer une nouvelle intention? Et pouvez-vous donner des exemples de quand utiliser getBaseContext? – Rok

+0

Regardez cette question: http://stackoverflow.com/questions/1026973/android-whats-the-difference-between-the-various-methods-to-get-a-context – Karan

+0

Merci de me répondre si rapidement , Karan. C'est l'une des pages que j'ai regardées. Il mentionne "n'utilisez pas getBaseContext - utilisez simplement le contexte que vous avez". Évidemment, j'apprécie énormément les commentaires de Diane, mais cela n'explique pas pourquoi getBaseContext est si souvent utilisé lors de la création d'intentions. – Rok

Questions connexes