Was ist 'Context' auf Android?

Was genau ist in der Android-Programmierung eine "Context"-Klasse und wofür wird sie verwendet?

Ich habe auf der Entwicklerseite darüber gelesen, aber ich kann es nicht genau verstehen.

Lösung

Um es einfach auszudrücken:

Wie der Name schon sagt, handelt es sich um den Kontext des aktuellen Zustands der Anwendung/des Objekts. Er lässt neu erstellte Objekte verstehen, was bisher geschehen ist. Normalerweise rufen Sie es auf, um Informationen über einen anderen Teil Ihres Programms (Aktivität und Paket/Anwendung) zu erhalten.

Sie können den Kontext erhalten, indem Sie getApplicationContext(), getContext(), getBaseContext() oder this aufrufen (wenn Sie in einer Klasse sind, die sich von Context erweitert, wie die Klassen Application, Activity, Service und IntentService).

Typische Verwendungen von Kontext:

  • Erstellen neuer Objekte: Erstellen von neuen Views, Adaptern, Listenern:

     TextView tv = new TextView(getContext());
     ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
  • Zugriff auf allgemeine Standard-Ressourcen: Dienste wie LAYOUT_INFLATER_SERVICE, SharedPreferences:

     context.getSystemService(LAYOUT_INFLATER_SERVICE)
     getApplicationContext().getSharedPreferences(*Name*, *Modus*);
  • Impliziter Zugriff auf Komponenten: In Bezug auf Content Provider, Broadcasts, Intent

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

Ein Kontext ist ein Griff zum System; er bietet Dienste wie das Auflösen von Ressourcen, den Zugriff auf Datenbanken und Einstellungen usw. an. Eine Android-Anwendung hat Aktivitäten. Context ist wie ein Handle für die Umgebung, in der Ihre Anwendung gerade läuft. Das Activity-Objekt erbt das Context-Objekt.

Weitere Informationen finden Sie in Einführung in die Android-Entwicklung mit Android Studio - Tutorial.

Kommentare (0)

Ein Android-Context ist eine Schnittstelle (im allgemeinen Sinn, nicht im Java-Sinn; in Java ist "Context" eigentlich eine abstrakte Klasse!), die den Zugriff auf anwendungsspezifische Ressourcen, Klassen und Informationen über die Anwendungsumgebung ermöglicht.

Wenn Ihre Android-Anwendung eine Webanwendung wäre, wäre Ihr Kontext etwas Ähnliches wie ServletContext (ich mache hier keinen genauen Vergleich).

Ihre Aktivitäten und Dienste erweitern ebenfalls Context, so dass sie all diese Methoden erben, um auf die Umgebungsinformationen zuzugreifen, in denen die App läuft.

Kommentare (0)