Hvad er en `Context`-klasse i Android-programmering, og hvad bruges den til?


Jeg har læst om det på [developer site](https://d.android.com/reference/android/content/Context), men jeg kan ikke forstå det klart.


Hvad er 'Context' på Android?
=============================


For at sige det enkelt:


Som navnet antyder, er det konteksten for den aktuelle tilstand af programmet/objektet. Den gør det muligt for nyoprettede objekter at forstå, hvad der er foregået. Typisk kalder du den for at få oplysninger om en anden del af dit program (aktivitet og pakke/program).


Du kan få konteksten ved at påkalde `getApplicationContext()`, `getContext()`, `getBaseContext()` eller `this` (når du befinder dig i en klasse, der udvider fra `Context`, f.eks. klasserne Application, Activity, Service og IntentService).


Typiske anvendelser af kontekst:


* **Opretning af nye objekter**:
Oprettelse af nye visninger, adaptere, lyttere:



```
 TextView tv = new TextView(getContext());
 ListAdapter adapter = ny SimpleCursorAdapter(getApplicationContext(), ...);
```
* **Accessing standard fælles ressourcer**:
Tjenester som LAYOUT\_INFLATER\_SERVICE, SharedPreferences:



```
 context.getSystemService(LAYOUT_INFLATER_SERVICE)
 getApplicationContext().getSharedPreferences(*name*, *mode*);
```
* **Accessing components implicitly**:
Vedrørende indholdsudbydere, udsendelser, hensigt



```
 getApplicationContext().getContentResolver().query(uri, ...);
```

En kontekst er et håndtag til systemet; den leverer tjenester som f.eks. at opløse ressourcer, få adgang til databaser og præferencer osv. En Android-app har aktiviteter. Context er som et håndtag til det miljø, som din applikation kører i øjeblikket. Aktivitetsobjektet arver Context-objektet.


Du kan finde flere oplysninger i *[Introduktion til Android-udvikling med Android Studio - Tutorial](http://www.vogella.com/articles/Android/article.html#overview_context)*.


En Android [Context](https://developer.android.com/reference/android/content/Context.html) er en [Interface](https://en.wikipedia.org/wiki/Interface_%28computing%29) (i generel forstand, ikke i Java-sammenhæng; i Java er `Context` faktisk en abstrakt klasse!), der giver adgang til applikationsspecifikke ressourcer og klasser og oplysninger om applikationsmiljøet.


Hvis din android-app var en web-app, ville din kontekst være noget, der ligner `ServletContext` (jeg foretager ikke en nøjagtig sammenligning her).


Dine aktiviteter og tjenester udvider også `Context`, så de arver alle disse metoder til at få adgang til de miljøoplysninger, som appen kører i.

