Wat is 'Context' op Android?

In Android programmeren, wat is precies een Context klasse en waar wordt het voor gebruikt?

Ik heb erover gelezen op de ontwikkelaars site, maar ik kan het niet duidelijk begrijpen.

Oplossing

Om het simpel te zeggen:

Zoals de naam al doet vermoeden, is het de context van de huidige staat van de toepassing/object. Het laat nieuw gecreëerde objecten begrijpen wat er aan de hand is geweest. Typisch roep je het aan om informatie te krijgen over een ander deel van je programma (activiteit en pakket/toepassing).

Je kunt de context opvragen door getApplicationContext(), getContext(), getBaseContext() of this aan te roepen (als je in een klasse zit die uit Context voortkomt, zoals de Application, Activity, Service en IntentService klassen).

Typisch gebruik van context:

  • Het maken van nieuwe objecten: Het creëren van nieuwe views, adapters, listeners:

     TextView tv = new TextView(getContext());
     ListAdapter adapter = nieuwe SimpleCursorAdapter(getApplicationContext(), ...);
  • Toegang tot standaard gemeenschappelijke bronnen: Diensten zoals LAYOUT_INFLATER_SERVICE, SharedPreferences:

     context.getSystemService(LAYOUT_INFLATER_SERVICE)
     getApplicationContext().getSharedPreferences(*naam*, *mode*);
  • Toegang tot componenten impliciet: Met betrekking tot inhoudsaanbieders, uitzendingen, intenties

     getApplicationContext().getContentResolver().query(uri, ...);
Commentaren (6)

Een Context is een handvat naar het systeem; het biedt diensten zoals het oplossen van bronnen, toegang verkrijgen tot databases en voorkeuren, enzovoort. Een Android app heeft activiteiten. Context is als een handvat voor de omgeving waarin uw toepassing momenteel draait. Het activiteit object erft het Context object.

Voor meer informatie, kijk in Inleiding tot Android ontwikkeling met Android Studio - Tutorial.

Commentaren (0)

Een Android Context is een Interface (in de algemene zin, niet in de Java zin; in Java is Context eigenlijk een abstracte klasse!) die toegang geeft tot applicatie specifieke bronnen en klasse en informatie over de applicatie omgeving.

Als je android app een web app was, zou je context iets zijn dat lijkt op ServletContext (ik maak hier geen exacte vergelijking).

Je activiteiten en services breiden Context ook uit, dus ze erven al die methoden om toegang te krijgen tot de omgevingsinformatie waarin de app draait.

Commentaren (0)