web-dev-qa-db-fra.com

Quelle est la différence entre l'activité et le contexte?

L'activité et le contexte sont-ils identiques ou y a-t-il des différences?

Quand dois-je faire passer une activité par une méthode et quand un contexte?

84
Android

Pour autant que je comprends: Context est l'objet de base. Ainsi, chaque activité identique à application dérive du contexte. Cela signifie que chaque activité et chaque Application IS a Context;

De developer.Android.comActivité

Java.lang.Object
  ↳ Android.content.Context
      ↳ Android.content.ContextWrapper
          ↳ Android.view.ContextThemeWrapper
              ↳ Android.app.Activity

Et Application

Java.lang.Object
↳   Android.content.Context
   ↳    Android.content.ContextWrapper
       ↳    Android.app.Application

Un contexte d'application dure tant que votre application est active, tandis que le contexte d'activité meurt avec votre activité (il n'est pas valide après onDestroy de cette activité).

Donc, si vous avez besoin du contexte entre les activités (c'est-à-dire dans un singleton), vous ferez mieux d'utiliser un contexte d'application.

Habituellement sur Android Méthodes Framework où un contexte est attendu, cela ne fait aucune différence lequel vous passez. Mais soyez toujours conscient de MemoryLeaks si vous gardez une longue vie Références à un contexte

106
Rafael T

Comme vous pouvez le voir sur le doc Android :

La classe Activity s'étend de "ContextThemeWrapper", et celle-ci de "ContextWrapper", et celle de "Context".

Donc, oui, une activité étend le contexte!

8
zapotec