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.
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, ...);
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.
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.