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.
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.
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, ...);
Dans votre exemple context.getSystemService(LAYOUT_INFLATER_SERVICE)
où et comment context
défini ?
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] ;
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.
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 :
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()
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.
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.
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.
@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 )
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_ .
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
.
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 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.
21 votes
En rapport avec cette question