271 votes

Différence entre le contexte d’activité et le contexte de l’Application

Cela m’a laissé bouche bée, j’utilisais ce SDK Android 2.1-r8 :

et aussi en

à l’aide de se bloque les deux et `` ... qui m’amènent à cette question :

Quelle est la différence réelle entre un contexte d’activité et le contexte de l’application, bien qu’ils partagent le libellé « Contexte » ?

287voto

Cheryl Simon Points 25259

Ils sont à la fois des instances de Contexte, mais l'instance de l'application est liée au cycle de vie de l'application, tandis que l'Activité de l'instance est liée au cycle de vie d'une Activité. Ainsi, ils ont accès à des informations différentes sur l'environnement de l'application.

Si vous lisez la documentation à getcontexteapplication il note que vous ne devez utiliser cette option si vous avez besoin d'un contexte dont le cycle de vie distinct dans le contexte actuel. Cela ne s'applique pas dans l'un de vos exemples.

Le contexte d'Activité a sans doute quelques informations sur l'activité en cours qui est nécessaire à la réalisation de ces appels. Si vous afficher le message d'erreur exact, peut-être en mesure d'identifier exactement ce dont il a besoin.

Mais, en général, utiliser le contexte d'activité, sauf si vous avez une bonne raison de ne pas.

39voto

lucas Points 1011

Ceci est évidemment un défaut de la conception de l'API. En premier lieu, le contexte d'activité et le contexte d'application sont des objets totalement différents. Par conséquent, les paramètres de méthode où le contexte est utilisé doivent utiliser directement ApplicationContext ou Activity , au lieu d'utiliser Context. En second lieu, le doc devrait spécifier le contexte à utiliser ou non explicitement.

17voto

user2779311 Points 87

La raison pour laquelle je pense est que ProgressDialog est attaché à l’activité qui propulse ProgressDialog car le dialogue ne peut pas rester après la destruction de l’activité, il faut donc passer ce (ActivityContext) qui est également détruit par l’activité l'activité va.

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