2263 votes

Qu'est-ce que le "Contexte" sur Android ?

Dans la programmation Android, qu'est-ce qu'un Context et à quoi sert-elle ?

Je l'ai lu sur le site du développeur mais je ne parviens pas à le comprendre clairement.

21 votes

En rapport avec cette question

1705voto

Sameer Segal Points 6268

Pour faire simple :

Comme son nom l'indique, il s'agit du 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 (dans une classe qui s'étend de Context (par exemple, 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, ...);

61 votes

Dans votre exemple context.getSystemService(LAYOUT_INFLATER_SERVICE) où et comment context défini ?

3 votes

je pense que le contexte devrait être Contexte (la classe de contexte)

10 votes

Il est bien expliqué pourquoi nous avons besoin de contexte lors de la création dynamique d'une vue de texte. Mais pour créer dynamiquement des tableaux de vues de texte, nous n'avons pas besoin de mentionner de contexte. Pourquoi en est-il ainsi ? TextView[] textview = new TextView[10] ;

583voto

Devrath Points 2552

Définition du contexte

  • Le contexte représente les données d'environnement
  • Il permet d'accéder à des éléments tels que des bases de données

Des termes plus simples (exemple 1)

  • Considérons que la personne X est le PDG d'une jeune entreprise de logiciels.

  • Il y a un architecte principal présent dans l'entreprise, cet architecte principal fait tout le travail dans l'entreprise qui implique comme la base de données, UI etc.

  • Maintenant, le PDG engage un nouveau développeur.

  • C'est l'architecte qui détermine la responsabilité de la personne nouvellement embauchée. en fonction des compétences de la nouvelle personne, à savoir si elle va travailler sur la base de données ou l'interface utilisateur, etc.

Des termes plus simples (exemple 2)

  • C'est comme l'accès à l'activité Android à la ressource de l'application.

  • C'est comme lorsque vous visitez un hôtel, vous voulez le petit-déjeuner, le déjeuner et le dîner à des heures appropriées. dîner dans les horaires appropriés, n'est-ce pas ?

  • Il y a beaucoup d'autres choses que vous aimez pendant le temps du séjour. Comment obtenez-vous ces choses ?

  • Vous demandez à la personne du service d'étage de vous apporter ces choses.

  • Ici, la personne du service de chambre est le contexte considérant que vous êtes la l'hôtel étant votre application, et enfin le petit-déjeuner, le déjeuner et le dîner étant les ressources. le dîner doivent être les ressources.


Les choses qui impliquent le contexte sont :

  1. Chargement d'une ressource.
  2. Lancement d'une nouvelle activité.
  3. Créer des vues.
  4. obtenir le service du système.

Context est la classe de base pour Activité , Service , Application etc.

Une autre façon de le décrire : Considérez le contexte comme la télécommande d'une télévision et les chaînes de la télévision sont des ressources, des services, des intentions d'utilisation, etc. - - - Ici, la télécommande agit comme un accès pour accéder à toutes les différentes ressources au premier plan.

  • Ainsi, Remote a accès à des canaux tels que des ressources, des services, des intentions d'utilisation, etc .....

  • De même... Quiconque a accès à la distance a naturellement accès à toutes les choses telles que les ressources, les services, les intentions d'utilisation, etc.


Différentes méthodes permettant d'obtenir le contexte

  • getApplicationContext()
  • getContext()
  • getBaseContext()
  • ou this (lorsqu'il s'agit de la classe d'activité)

Exemple :

TextView tv = new TextView(this);

Le mot-clé this fait référence au contexte de l'activité en cours.

6 votes

Ok, donc la classe dérivée de l'activité EST elle-même un contexte. C'est pourquoi en la passant aux vues nouvellement créées, nous passons le contexte.

13 votes

Je me demande si c'est une bonne décision de conception que de rendre le contexte accessible à partir de tant d'endroits différents ? Un seul getContext() statique dans l'application aurait été suffisant à mon avis.

2 votes

@Trilarion... Cela dépend de la façon dont vous voulez utiliser le contexte getApplicationContext() , getContext() , getBaseContext() ..... Référez-vous à ceci - > ( stackoverflow.com/a/10641257 )

131voto

giulio Points 2846

Un contexte est une poignée du système ; il fournit des services tels que la résolution de ressources, l'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 le site _Introduction au développement Android avec Android Studio - Tutoriel_ .

104voto

Dmytro Danylyk Points 6911

Context est une "interface" vers les informations globales sur l'environnement d'une application. En pratique, Context est en fait un classe abstraite dont la mise en œuvre est assurée par le système Android.

Il permet d'accéder à des ressources et à des classes spécifiques à l'application, ainsi que d'appeler des opérations au niveau de l'application, telles que le lancement d'activités, la diffusion et la réception d'intentions, etc.

Dans l'image suivante, vous pouvez voir une hiérarchie de classes, dans laquelle Context est la classe Racine de cette hiérarchie. En particulier, il convient de souligner que Activity est un descendant de Context .

Activity diagram

10 votes

comment cette photo a-t-elle été générée ?

77voto

s0ld13r Points 348

Qu'est-ce que Context exactement ?

Selon la documentation de référence d'Android, il s'agit d'une entité qui représente diverses données d'environnement. Elle permet d'accéder aux fichiers locaux, aux bases de données, aux chargeurs de classes associés à l'environnement, aux services (y compris les services au niveau du système), et plus encore. Tout au long de ce livre, et dans votre codage quotidien avec Android, vous verrez le Contexte circuler fréquemment.

De la " Android en pratique Livre ", p. 60.

Plusieurs API Android nécessitent un Context comme paramètre

Si vous regardez les différentes API d'Android, vous remarquerez que remarquer que beaucoup d'entre elles prennent un android.content.Context comme un paramètre. Vous verrez également qu'une activité ou un service est généralement utilisé comme un paramètre de l'activité. Context . Cela fonctionne car ces deux classes sont issues de Context .

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