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

91

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

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

Android
la source
@Egor Thnx man, et je vais prendre soin de ça .. avant de poser la question .. pouvez-vous m'aider dans une autre question .. quelle est la racine de toute activité dans Android
Android
s'il vous plaît vérifier la discussion ci-dessous pour effacer la question
Egor
Dommage qu'aucune de ces réponses ne soit très complète. C'est le premier élément qui apparaît pour une recherche Google.
SMBiggs

Réponses:

118

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

De l' developer.android.com activité

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 onDestroycette activité).

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

Habituellement, sur les méthodes Android Framework où un contexte est attendu, celui que vous transmettez ne fait aucune différence. Mais soyez toujours conscient de MemoryLeaks si vous conservez des références de longue date à un contexte

Rafael T
la source
2
Oui, je suis désolé, j'ai vérifié le lien, en effet le contexte est une superclasse d'activité. Quoi qu'il en soit, il n'est pas tout à fait juste de dire que l'activité est un contexte, l'activité est un objet plus complexe, tandis que le contexte n'est qu'un bloc qui contient les informations et donne accès aux ressources.
Egor
@Rafael T Thnx pour avoir donné la bonne réponse
Android
17
c'est tout à fait vrai si je me réfère aux langages orientés objet: chaque objet en Java dérive d'Object.class, donc dans FACT, tout EST un objet. Pour être plus précis: Acivity est une spécialisation de Contexte. Si j'ai un animal de classe abstraite et deux classes qui dérivent de l'animal (chat, chien), ces deux sont au moins des animaux. Partout où un animal est requis, vous pouvez passer des chats ou des chiens, comme c'est la même chose pour le contexte! Veuillez confirmer les informations avant de me refuser
Rafael T
1
"Un contexte d'activité dure, tant que votre application est active, tandis que le contexte d'activité meurt avec votre activité" semble éteint. Le premier ne devrait-il pas être le contexte d' application ?
FirstOne
8

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".

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

zapotèque
la source