Dans la programmation Android, qu'est-ce qu'une classe Context
et à quoi sert-elle ?
J'ai lu des informations à ce sujet sur le [site du développeur][1], mais je ne parviens pas à les comprendre clairement.
[1] : https://d.android.com/reference/android/content/Context
Pour faire simple :
Comme son nom l'indique, c'est le contexte de l'état actuel de l'application/objet. Il permet aux objets nouvellement créés de comprendre ce qui s'est passé. Généralement, vous l'appelez pour obtenir des informations concernant une autre partie de votre programme (activité et paquetage/application).
Vous pouvez obtenir le contexte en invoquant getApplicationContext()
, getContext()
, getBaseContext()
ou this
(lorsque vous êtes dans une classe qui s'étend à partir de Context
, comme les classes Application, Activity, Service et IntentService).
Utilisations typiques du contexte :
Création de nouveaux objets : Création de nouvelles vues, adaptateurs, listeners :
TextView tv = new TextView(getContext()) ;
ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...) ;
Accès aux ressources communes standard : Des services comme LAYOUT_INFLATER_SERVICE, SharedPreferences :
context.getSystemService(LAYOUT_INFLATER_SERVICE)
getApplicationContext().getSharedPreferences(*name*, *mode*) ;
Accès aux composants de manière implicite : Concernant les fournisseurs de contenu, les diffusions, l'intention.
getApplicationContext().getContentResolver().query(uri, ...) ;
Un contexte est une poignée du système ; il fournit des services tels que la résolution de ressources, l'obtention d'un accès aux bases de données et aux préférences, etc. Une application Android a des activités. Le contexte est une sorte d'identifiant de l'environnement dans lequel votre application est en cours d'exécution. L'objet Activité hérite de l'objet Contexte.
Pour plus d'informations, consultez [Introduction au développement Android avec Android Studio - Tutoriel][1].
[1] : http://www.vogella.com/articles/Android/article.html#overview_context
Un [Contexte][1] Android est une Interface (au sens général, pas au sens de Java ; en Java, Context
est en fait une classe abstraite !) qui permet d'accéder à des ressources et des classes spécifiques à l'application et à des informations sur l'environnement de l'application.
Si votre application android était une application web, votre contexte serait quelque chose de similaire à ServletContext
(je ne fais pas une comparaison exacte ici).
Vos activités et services étendent aussi Context
, donc ils héritent de toutes ces méthodes pour accéder aux informations de l'environnement dans lequel l'application est exécutée.
[1] : http://developer.android.com/reference/android/content/Context.html