Was genau ist eine Context
Klasse in der Android-Programmierung und wofür wird sie verwendet?
Ich habe auf der Entwicklerseite darüber gelesen, kann es aber nicht klar verstehen.
android
android-context
Brigadegeneral
quelle
quelle
Antworten:
Einfach ausgedrückt:
Wie der Name schon sagt, ist dies der Kontext des aktuellen Status der Anwendung / des Objekts. Damit können neu erstellte Objekte verstehen, was passiert ist. Normalerweise rufen Sie es auf, um Informationen zu einem anderen Teil Ihres Programms (Aktivität und Paket / Anwendung) zu erhalten.
Sie können den Kontext erhalten durch den Aufruf
getApplicationContext()
,getContext()
,getBaseContext()
oderthis
(wenn in einer Klasse , die aus erstrecktContext
, wie die Anwendung, Aktivität, Dienstleistung und IntentService Klassen).Typische Verwendungen des Kontexts:
Neue Objekte erstellen: Neue Ansichten, Adapter, Listener erstellen:
Zugriff auf allgemeine Standardressourcen : Dienste wie LAYOUT_INFLATER_SERVICE, SharedPreferences:
Impliziter Zugriff auf Komponenten : In Bezug auf Inhaltsanbieter, Broadcasts, Absichten
quelle
context.getSystemService(LAYOUT_INFLATER_SERVICE)
Wo und wie wird in Ihrem Beispielcontext
definiert?Definition des Kontextes
Einfachere Begriffe (Beispiel 1)
Betrachten Sie Person-X ist der CEO eines Start-up-Software-Unternehmens.
Es ist ein leitender Architekt im Unternehmen anwesend. Dieser leitende Architekt erledigt alle Arbeiten im Unternehmen, einschließlich Datenbank, Benutzeroberfläche usw.
Jetzt stellt der CEO einen neuen Entwickler ein.
Es ist der Architekt, der die Verantwortung der neu eingestellten Person anhand der Fähigkeiten der neuen Person mitteilt, ob sie an einer Datenbank oder einer Benutzeroberfläche usw. arbeiten wird.
Einfachere Begriffe (Beispiel 2)
Es ist wie der Zugriff von Android-Aktivitäten auf die App-Ressource.
Es ist ähnlich wie wenn Sie ein Hotel besuchen, Sie möchten Frühstück, Mittag- und Abendessen zu den richtigen Zeiten, oder?
Es gibt viele andere Dinge, die Sie während Ihres Aufenthalts mögen. Wie bekommst du diese Dinge?
Sie bitten den Zimmerservice, diese Dinge für Sie mitzubringen.
Hier ist die Person vom Zimmerservice der Kontext, wenn man bedenkt, dass Sie die einzige Aktivität sind und das Hotel Ihre App ist. Schließlich müssen Frühstück, Mittag- und Abendessen die Ressourcen sein.
Dinge, die Kontext beinhalten, sind:
Der Kontext ist die Basisklasse für Aktivität , Service , Anwendung usw.
Eine andere Möglichkeit, dies zu beschreiben: Betrachten Sie den Kontext als entfernt von einem Fernseher und den Kanälen im Fernseher sind Ressourcen, Dienste, Absichten usw. - - - Hier fungiert die Fernbedienung als Zugriff, um Zugriff auf alle verschiedenen Ressourcen in den Vordergrund zu bekommen.
Remote hat also Zugriff auf Kanäle wie Ressourcen, Dienste, Absichten usw.
Ebenso ... Wer Zugriff auf Remote hat, hat natürlich Zugriff auf alle Dinge wie Ressourcen, Dienste, Absichten usw.
Verschiedene Methoden, mit denen Sie Kontext erhalten können
getApplicationContext()
getContext()
getBaseContext()
this
(wenn in der Aktivitätsklasse)Beispiel:
Das Schlüsselwort
this
bezieht sich auf den Kontext der aktuellen Aktivität.quelle
getApplicationContext()
,getContext()
,getBaseContext()
..... Siehe this -> ( stackoverflow.com/a/10641257 )SomeActivityName.this
. In einem Threadthis
bezieht sich eine Instanz auf den Thread und nicht auf die AktivitätQuelle
Das Thema Kontext in Android scheint für viele verwirrend zu sein. Die Leute wissen nur, dass der Kontext ziemlich oft benötigt wird, um grundlegende Dinge in Android zu tun. Menschen geraten manchmal in Panik, weil sie versuchen, eine Operation auszuführen, die den Kontext erfordert, und sie wissen nicht, wie sie den richtigen Kontext „erhalten“ können. Ich werde versuchen, die Idee des Kontexts in Android zu entmystifizieren. Eine vollständige Behandlung des Problems würde den Rahmen dieses Beitrags sprengen, aber ich werde versuchen, einen allgemeinen Überblick zu geben, damit Sie einen Eindruck davon bekommen, was Kontext ist und wie Sie ihn verwenden. Um zu verstehen, was Kontext ist, werfen wir einen Blick auf den Quellcode:
https://github.com/android/platform_frameworks_base/blob/master/core/java/android/content/Context.java
Was genau ist Kontext?
Nun, die Dokumentation selbst bietet eine recht einfache Erklärung: Die Context-Klasse ist eine „Schnittstelle zu globalen Informationen über eine Anwendungsumgebung“.
Die Context-Klasse selbst wird als abstrakte Klasse deklariert, deren Implementierung vom Android-Betriebssystem bereitgestellt wird. Die Dokumentation sieht ferner vor, dass der Kontext „… den Zugriff auf anwendungsspezifische Ressourcen und Klassen sowie Aufrufe für Vorgänge auf Anwendungsebene wie das Starten von Aktivitäten, das Senden und Empfangen von Absichten usw. ermöglicht“.
Sie können jetzt sehr gut verstehen, warum der Name Kontext ist. Es ist, weil es nur das ist. Der Kontext stellt, wenn Sie so wollen, den Link oder Hook für eine Aktivität, einen Dienst oder eine andere Komponente bereit und verknüpft ihn so mit dem System, wodurch der Zugriff auf die globale Anwendungsumgebung ermöglicht wird. Mit anderen Worten: Der Kontext bietet die Antwort auf die Frage der Komponenten: "Wo zum Teufel bin ich in Bezug auf die App im Allgemeinen und wie kann ich auf den Rest der App zugreifen / mit ihr kommunizieren?" Wenn dies alles etwas verwirrend erscheint, liefert ein kurzer Blick auf die von der Context-Klasse bereitgestellten Methoden einige weitere Hinweise auf ihre wahre Natur.
Hier ist eine zufällige Auswahl dieser Methoden:
getAssets()
getResources()
getPackageManager()
getString()
getSharedPrefsFile()
Was haben all diese Methoden gemeinsam? Sie alle ermöglichen es jedem, der Zugriff auf den Kontext hat, auf anwendungsweite Ressourcen zuzugreifen.
Mit anderen Worten, der Kontext verknüpft die Komponente, auf die verwiesen wird, mit dem Rest der Anwendungsumgebung. Die Assets (denken Sie an den Ordner '/ assets' in Ihrem Projekt) sind beispielsweise in der gesamten Anwendung verfügbar, vorausgesetzt, eine Aktivität, ein Dienst oder was auch immer weiß, wie auf diese Ressourcen zugegriffen werden kann. Gleiches gilt für
getResources()
die Möglichkeit, Dinge zu tun,getResources().getColor()
die Sie in diecolors.xml
Ressource einbinden (egal, dass aapt den Zugriff auf Ressourcen über Java-Code ermöglicht, das ist ein separates Problem).Das Ergebnis ist , dass
Context
ist das, was den Zugriff auf Systemressourcen ermöglicht und dessen , was hakt Komponenten in die „größere app“. Schauen wir uns die UnterklassenContext
, die Klassen , die die Umsetzung der abstrakten bietenContext
Klasse. Die naheliegendste Klasse der istActivity
Klasse.Activity
Inherits ausContextThemeWrapper
, die erbt vonContextWrapper
, die erbt vonContext
selbst. diese Klassen nützlich sind , zu sehen Dinge auf einer tieferen Ebene zu verstehen, aber ausreichend für die jetzt zu wissen , dass es istContextThemeWrapper
undContextWrapper
sind so ziemlich wie sie klingen. sie die abstrakten Elemente des GerätesContext
Klasse selbst, indem Sie einen Kontext (den tatsächlichen Kontext) "umschließen" und diese Funktionen an diesen Kontext delegieren. Ein Beispiel ist hilfreich - in derContextWrapper
Klasse, die abstrakte MethodegetAssets
aus derContext
Klasse wird wie folgt implementiert:mBase
ist einfach ein Feld, das vom Konstruktor auf einen bestimmten Kontext festgelegt wird. Daher wird ein Kontext umbrochen und dieContextWrapper
Implementierung der Methode getAssets an diesen Kontext delegiert. Kommen wir zurück zur Untersuchung derActivity
Klasse, von der letztendlich geerbt wird, umContext
zu sehen, wie dies alles funktioniert.Sie wissen wahrscheinlich, was eine Aktivität ist, aber zu überprüfen - es ist im Grunde eine einzige Sache, die der Benutzer tun kann. Es wird ein Fenster bereitgestellt, in dem die Benutzeroberfläche platziert werden kann, mit der der Benutzer interagiert. Entwickler, die mit anderen APIs vertraut sind, und sogar Nicht-Entwickler, können dies im Volksmund als „Bildschirm“ betrachten. Das ist technisch ungenau, aber für unsere Zwecke spielt es keine Rolle. Wie tun
Activity
undContext
interagieren und was genau läuft in ihrer Vererbungsbeziehung ab?Auch hier ist es hilfreich, sich bestimmte Beispiele anzusehen. Wir alle wissen, wie man Aktivitäten startet. Vorausgesetzt, Sie haben „den Kontext“, von dem aus Sie die Aktivität starten, rufen Sie einfach an
startActivity(intent)
, wobei die Absicht den Kontext beschreibt, von dem aus Sie eine Aktivität starten, und die Aktivität, die Sie starten möchten. Das ist das VertrautestartActivity(this, SomeOtherActivity.class)
.Und was ist
this
?this
ist Ihre Aktivität, weil dieActivity
Klasse von erbtContext
. Die vollständige Übersicht lautet wie folgt: Wenn Sie aufrufenstartActivity
,Activity
führt die Klasse letztendlich Folgendes aus:Also nutzt es das
execStartActivity
aus derInstrumentation
Klasse (eigentlich aus einer inneren Klasse inInstrumentation
aufgerufenActivityResult
).An diesem Punkt bekommen wir einen Blick auf die Systeminternalen.
Hier kümmert sich das Betriebssystem eigentlich um alles. Wie startet Instrumentation die Aktivität genau? Nun, der Parameter
this
in derexecStartActivity
obigen Methode ist Ihre Aktivität, dh der Kontext, und derexecStartActivity
nutzt diesen Kontext.Eine Übersicht von 30.000 ist folgende: Die Instrumentation-Klasse verfolgt eine Liste von Aktivitäten, die sie überwacht, um ihre Arbeit zu erledigen. Diese Liste wird verwendet, um alle Aktivitäten zu koordinieren und sicherzustellen, dass bei der Verwaltung des Aktivitätsflusses alles reibungslos funktioniert.
Es gibt einige Operationen, bei denen ich mich nicht vollständig mit den Koordinaten-Thread- und Prozessproblemen befasst habe. Letztendlich
ActivityResult
verwendet das eine native Operation - dieActivityManagerNative.getDefault().startActivity()
die verwendet, dieContext
Sie beim Aufruf übergeben habenstartActivity
. Der Kontext, den Sie übergeben haben, wird bei Bedarf zur Unterstützung der „Vorsatzlösung“ verwendet. Die Absichtsauflösung ist der Prozess, mit dem das System das Ziel der Absicht bestimmen kann, wenn es nicht bereitgestellt wird. (Weitere Informationen finden Sie in der Anleitung hier).Damit Android dies tun kann, muss es Zugriff auf Informationen haben, die von bereitgestellt werden
Context
. Insbesondere muss das System auf a zugreifen,ContentResolver
damit es „den MIME-Typ der Intent-Daten bestimmen kann“. Diese ganze Frage, wiestartActivity
der Kontext verwendet wird, war etwas kompliziert und ich verstehe die Interna selbst nicht vollständig. Mein Hauptpunkt diente nur der Veranschaulichung, wie auf anwendungsweite Ressourcen zugegriffen werden muss, um viele der für eine App wesentlichen Vorgänge auszuführen.Context
Dies ermöglicht den Zugriff auf diese Ressourcen. Ein einfacheres Beispiel könnten Ansichten sein. Wir alle wissen, was Sie erstellen Benutzerdefinierte Ansicht durch ErweiternRelativeLayout
oder eine andereView
Klasse müssen Sie einen Konstruktor bereitstellen, der a akzeptiertContext
als Argument. Wenn Sie Ihre benutzerdefinierte Ansicht instanziieren, übergeben Sie den Kontext. Warum? Weil die Ansicht Zugriff auf Themen, Ressourcen und andere Konfigurationsdetails der Ansicht haben muss. Die Ansichtskonfiguration ist eigentlich ein gutes Beispiel. Jeder Kontext verfügt über verschiedene Parameter (Felder inContext
den Implementierungen), die vom Betriebssystem selbst für Dinge wie die Dimension oder Dichte der Anzeige festgelegt werden. Es ist leicht zu erkennen, warum diese Informationen für das Einrichten von Ansichten usw. wichtig sind.Ein letztes Wort: Aus irgendeinem Grund scheinen Leute, die neu in Android sind (und sogar Leute, die nicht so neu sind), die objektorientierte Programmierung in Bezug auf Android völlig zu vergessen. Aus irgendeinem Grund versuchen die Leute, ihre Android-Entwicklung an vorgefertigte Paradigmen oder erlernte Verhaltensweisen anzupassen.
Android hat ein eigenes Paradigma und ein bestimmtes Muster, das tatsächlich ziemlich konsistent ist, wenn Sie Ihre vorgefertigten Vorstellungen loslassen und einfach die Dokumentation und den Entwicklungsleitfaden lesen. Mein eigentlicher Punkt ist jedoch, dass es manchmal schwierig sein kann, den richtigen Kontext zu finden. Menschen geraten jedoch zu Unrecht in Panik, weil sie in eine Situation geraten, in der sie den Kontext brauchen und glauben, ihn nicht zu haben. Auch hier ist Java eine objektorientierte Sprache mit einem Vererbungsdesign.
Sie haben den Kontext nur in Ihrer Aktivität, weil Ihre Aktivität selbst vom Kontext erbt. Es gibt keine Magie (außer all dem, was das Betriebssystem selbst tut, um verschiedene Parameter einzustellen und Ihren Kontext richtig zu „konfigurieren“). Wenn Sie also Speicher- / Leistungsprobleme beiseite lassen (z. B. Verweise auf den Kontext, wenn Sie dies nicht benötigen, oder dies auf eine Weise tun, die negative Auswirkungen auf den Speicher hat usw.), ist der Kontext ein Objekt wie jedes andere und kann weitergegeben werden genau wie jedes POJO (Plain Old Java Object). Manchmal müssen Sie möglicherweise clevere Dinge tun, um diesen Kontext abzurufen, aber jede reguläre Java-Klasse, die sich von nichts anderem als Object selbst erstreckt, kann so geschrieben werden, dass sie Zugriff auf den Kontext hat. Stellen Sie einfach eine öffentliche Methode bereit, die einen Kontext verwendet, und verwenden Sie sie dann nach Bedarf in dieser Klasse.
quelle
Ein Kontext ist ein Handle für das System. Es bietet Dienste wie das Auflösen von Ressourcen, den Zugriff auf Datenbanken und Einstellungen usw. Eine Android-App hat Aktivitäten. Der Kontext ist wie ein Handle für die Umgebung, in der Ihre Anwendung gerade ausgeführt wird. Das Aktivitätsobjekt erbt das Kontextobjekt.
Weitere Informationen finden Sie unter Einführung in die Android-Entwicklung mit Android Studio - Tutorial .
quelle
Context
ist eine "Schnittstelle" zu den globalen Informationen über eine Anwendungsumgebung. In der PraxisContext
ist eigentlich eine abstrakte Klasse , deren Implementierung vom Android-System bereitgestellt wird.Es ermöglicht den Zugriff auf anwendungsspezifische Ressourcen und Klassen sowie das Aufrufen von Vorgängen auf Anwendungsebene, z. B. Starten von Aktivitäten, Senden und Empfangen von Absichten usw.
In der folgenden Abbildung sehen Sie eine Hierarchie von Klassen, wobei
Context
sich die Stammklasse dieser Hierarchie befindet. Insbesondere ist hervorzuheben, dassActivity
es sich um einen Nachkommen von handeltContext
.quelle
Was
Context
genau ist?Aus dem " Android in der Praxis Buch ", S. 22. 60.
Für mehrere Android-APIs ist a erforderlich
Context
as-ParameterWenn Sie sich die verschiedenen Android-APIs ansehen, werden Sie feststellen, dass viele von ihnen ein
android.content.Context
Objekt als Parameter verwenden. Sie werden auch sehen, dass eine Aktivität oder ein Dienst normalerweise als verwendet wirdContext
. Dies funktioniert, da sich beide Klassen von erstreckenContext
.quelle
Einfaches Beispiel, um
context
in Android zu verstehen :Jeder Chef hat einen Assistenten, der sich um alle weniger wichtigen und zeitaufwändigen Aufgaben kümmert. Wenn eine Datei oder eine Tasse Kaffee benötigt wird, ist ein Assistent auf der Flucht. Einige Chefs wissen kaum, was im Büro los ist, deshalb fragen sie auch ihre Assistenten. Sie erledigen einige Arbeiten selbst, aber für die meisten anderen Dinge benötigen sie die Hilfe ihrer Assistenten.
In diesem Szenario,
Boss - ist die Android-Anwendung
Assistent - ist Kontext
Dateien / Tasse Kaffee - sind Ressourcen
Wir rufen im Allgemeinen den Kontext auf, wenn wir Informationen zu verschiedenen Teilen unserer Anwendung wie Aktivitäten, Anwendungen usw. benötigen.
Einige Operationen (Dinge, bei denen der Assistent benötigt wird), bei denen es um den Kontext geht:
Verschiedene Möglichkeiten, um Kontext zu erhalten:
quelle
Ein Android- Kontext ist eine Schnittstelle (im allgemeinen Sinne, nicht im Java-Sinne; in Java
Context
ist es tatsächlich eine abstrakte Klasse!), Die den Zugriff auf anwendungsspezifische Ressourcen sowie Klassen und Informationen zur Anwendungsumgebung ermöglicht.Wenn Ihre Android-App eine Web-App wäre, wäre Ihr Kontext ähnlich wie
ServletContext
(ich mache hier keinen genauen Vergleich).Ihre Aktivitäten und Dienste werden ebenfalls erweitert
Context
, sodass sie alle diese Methoden erben, um auf die Umgebungsinformationen zuzugreifen, in denen die App ausgeführt wird.quelle
Context
stellt ein Handle zum Abrufen von Umgebungsdaten dar.Context
Klasse selbst wird als abstrakt deklariert, deren Implementierung vom Android-Betriebssystem bereitgestellt wird.Context
ist wie fern von einem Fernseher & Kanal im Fernseher sind Ressourcen, Dienste usw.Was kannst du damit machen?
Möglichkeiten, um Kontext zu erhalten:
getApplicationContext()
getContext()
getBaseContext()
quelle
Stellen Sie es einfach für Neulinge heraus;
Verstehe also zuerst den Wortkontext:
In englisch-lib. es bedeutet:
Nehmen Sie jetzt das gleiche Verständnis für die Programmierwelt:
Kontext des aktuellen Status der Anwendung / des Objekts. Damit können neu erstellte Objekte verstehen, was passiert ist. Normalerweise rufen Sie es auf, um Informationen zu einem anderen Teil Ihres Programms (Aktivität, Paket / Anwendung) zu erhalten.
Sie können den Kontext erhalten durch den Aufruf
getApplicationContext()
,getContext(), getBaseContext()
oderthis
(wenn sie in der Aktivitätsklasse).Verwenden Sie den folgenden Code, um den Kontext überall in der Anwendung abzurufen:
Erstellen Sie eine neue Klasse
AppContext
in Ihrer Android-AnwendungWenn Sie jetzt einen Anwendungskontext in einer Nicht-Aktivitätsklasse wünschen, rufen Sie diese Methode auf und Sie haben einen Anwendungskontext.
Ich hoffe das hilft ;)
quelle
Stellen Sie sich das als die VM vor, die den Prozess, in dem die App oder der Dienst ausgeführt wird, isoliert hat. Die isolierte Umgebung hat Zugriff auf eine Reihe zugrunde liegender Systeminformationen und bestimmte zulässige Ressourcen. Sie benötigen diesen Kontext, um zu diesen Diensten zu gelangen.
quelle
Der Kontext ist ein Verweis auf das aktuelle Objekt. Der Kontext ermöglicht auch den Zugriff auf Informationen zur Anwendungsumgebung.
quelle
Die Klasse
android.content.Context
stellt die Verbindung zum Android-System und den Ressourcen des Projekts bereit. Es ist die Schnittstelle zu globalen Informationen über die Anwendungsumgebung.Der Kontext bietet auch Zugriff auf Android-Dienste, z. B. den Standortdienst.
Aktivitäten und Dienstleistungen erweitern die
Context
Klasse.quelle
Kontext ist Instanzen der Klasse android.content.Context stellen die Verbindung zum Android-System her, das die Anwendung ausführt. Sie können beispielsweise die Größe der aktuellen Geräteanzeige über den Kontext überprüfen.
Es gibt auch Zugriff auf die Ressourcen des Projekts. Es ist die Schnittstelle zu globalen Informationen über die Anwendungsumgebung.
Die Context-Klasse bietet auch Zugriff auf Android-Dienste, z. B. den Alarmmanager, um zeitbasierte Ereignisse auszulösen.
Aktivitäten und Dienste erweitern die Context-Klasse. Daher können sie direkt verwendet werden, um auf den Kontext zuzugreifen.
quelle
Der Kontext ist eine Schnittstelle zu globalen Informationen über eine Anwendungsumgebung. Es ist eine abstrakte Klasse, deren Implementierung vom
Android
System bereitgestellt wird .Context
ermöglicht den Zugriff auf anwendungsspezifische Ressourcen und Klassen sowie Aufrufe für Vorgänge auf Anwendungsebene wie zlaunching activities, broadcasting and receiving intents, etc.
Hier ist ein Beispiel
Weitere Informationen finden Sie unter http://developer.android.com/reference/android/content/Context.html
quelle
Der Kontext dient im Wesentlichen dem Ressourcenzugriff und dem Abrufen der Umgebungsdetails der Anwendung (für den Anwendungskontext) oder der Aktivität (für den Aktivitätskontext) oder einer anderen ...
Um Speicherverluste zu vermeiden, sollten Sie den Anwendungskontext für alle Komponenten verwenden, die ein Kontextobjekt benötigen. Weitere Informationen finden Sie hier
quelle
Der Kontext ist der Kontext des aktuellen Status der Anwendung / des Objekts. Es handelt sich um eine Entität, die verschiedene Umgebungsdaten darstellt. Der Kontext unterstützt die aktuelle Aktivität bei der Interaktion mit externen Android-Umgebungen wie lokalen Dateien, Datenbanken, mit der Umgebung verknüpften Klassenladeprogrammen, Diensten einschließlich Diensten auf Systemebene und mehr.
Ein Kontext ist ein Handle für das System. Es bietet Dienste wie das Auflösen von Ressourcen, den Zugriff auf Datenbanken und Einstellungen usw. Eine Android-App hat Aktivitäten. Es ist wie ein Handle für die Umgebung, in der Ihre Anwendung gerade ausgeführt wird. Das Aktivitätsobjekt erbt das Kontextobjekt.
Verschiedene aufrufende Methoden, mit denen Sie den Kontext abrufen können 1. getApplicationContext (), 2. getContext (), 3. getBaseContext () 4. oder dies (in der Aktivitätsklasse).
quelle
Kontext bedeutet, dass Android erfährt, für welche Aktivität ich mich entscheiden oder handeln soll.
1 -
Toast.makeText(context, "Enter All Details", Toast.LENGTH_SHORT).show();
es verwendet in diesem.Context context = ActivityName.this;
2 -
startActivity(new Intent(context,LoginActivity.class));
bedeutet in diesem Zusammenhang, von welcher Aktivität aus Sie zu einer anderen Aktivität wechseln möchten. context oder ActivityName.this ist schneller als getContext und getApplicatinContext.
quelle
A
Context
würden die meisten von uns als Anwendung bezeichnen . Es wird vom Android-System erstellt und kann nur das tun, was eine Anwendung kann. In Tomcat ist ein Kontext auch das, was ich als Anwendung bezeichnen würde.Es gibt einen Kontext, der viele Aktivitäten enthält. Jede Aktivität kann viele Ansichten haben.
Offensichtlich werden einige sagen, dass es aus diesem oder jenem Grund nicht passt, und sie haben wahrscheinlich Recht, aber wenn Sie sagen, dass ein Kontext Ihre aktuelle Anwendung ist, können Sie besser verstehen, was Sie in Methodenparameter eingeben.
quelle
Boss Assistant Analogie
Lassen Sie uns eine kleine Analogie haben, bevor wir tief in die Technik des Kontexts eintauchen
Was die offizielle Android Developer Site über Context sagt
Der Kontext ist Ihr Zugangspunkt für anwendungsbezogene Ressourcen
Sehen wir uns einige dieser Ressourcen oder Aufgaben an
Eine Aktivität starten.
Abrufen des absoluten Pfads zum anwendungsspezifischen Cache-Verzeichnis im Dateisystem.
Festlegen, ob die angegebene Berechtigung für einen bestimmten Prozess und eine bestimmte Benutzer-ID zulässig ist, die im System ausgeführt werden.
Überprüfen, ob Ihnen eine bestimmte Berechtigung erteilt wurde.
Und so weiter.
Wenn eine Android-Anwendung eine Aktivität starten möchte, geht sie direkt zu
Context
(Access Point), und dieContext
Klasse gibt ihm die Ressourcen zurück (in diesem Fall beabsichtigt).Wie jede andere Klassenklasse hat auch diese
Context
Klasse Felder und Methoden.Weitere Informationen finden Sie
Context
in der offiziellen Dokumentation. Sie behandelt so ziemlich alles, verfügbare Methoden, Felder und sogar die Verwendung von Feldern mit Methoden.quelle
Instanzen der Klasse android.content.Context stellen die Verbindung zum Android-System her, das die Anwendung ausführt. Sie können beispielsweise die Größe der aktuellen Geräteanzeige über den Kontext überprüfen.
Es gibt auch Zugriff auf die Ressourcen des Projekts. Es ist die Schnittstelle zu globalen Informationen über die Anwendungsumgebung.
Die Context-Klasse bietet auch Zugriff auf Android-Dienste, z. B. den Alarmmanager, um zeitbasierte Ereignisse auszulösen.
Aktivitäten und Dienste erweitern die Context-Klasse. Daher können sie direkt verwendet werden, um auf den Kontext zuzugreifen.
quelle
Wenn Sie Context mit anderen bekannten Klassen in Android verbinden möchten, beachten Sie diese Struktur:
Alle diese Klassen sind also auf ihre Weise Kontexte. Wenn Sie möchten, können Sie Service und ListActivity in den Kontext umwandeln . Wenn Sie genau hinschauen, erben einige Klassen auch das Thema. In Aktivitäten oder Fragmenten möchten Sie, dass das Theming auf Ihre Ansichten angewendet wird, aber es interessiert Sie beispielsweise nicht für die Serviceklasse .
Ich erkläre den Unterschied in Kontexten hier .
quelle
Einfach ausgedrückt
Context
ist Androids ein Chaos, das Sie nicht lieben werden, bis Sie aufhören, sich Sorgen zu machen.Android
Context
s sind:Gott-Objekte.
Sie möchten Ihre gesamte Anwendung weitergeben, wenn Sie mit der Entwicklung für Android beginnen, dies jedoch vermeiden, wenn Sie sich dem Programmieren, Testen und Android selbst ein wenig nähern.
Unklare Abhängigkeit.
Häufige Ursache für Speicherlecks.
PITA zum Testen.
Tatsächlicher Kontext, der vom Android-System zum Versenden von Berechtigungen, Ressourcen, Einstellungen, Diensten, Sendungen, Stilen, Anzeigen von Dialogen und Aufblähen des Layouts verwendet wird. Und Sie benötigen unterschiedliche
Context
Instanzen für einige separate Dinge (offensichtlich können Sie keinen Dialog aus einem Anwendungs- oder Dienstkontext anzeigen; Layouts, die aus Anwendungs- und Aktivitätskontexten aufgeblasen wurden, können unterschiedlich sein).quelle
Der Kontext ist die androidspezifische API für die Sandbox jeder App , die private Daten der Zugriffs-App wie Ressourcen, Datenbank, private Dateiverzeichnisse, Einstellungen, Einstellungen ... bereitstellt.
Die meisten Privatedata sind für alle Aktivitäten / Dienste / Broadcastlistener einer Anwendung gleich.
Da Application, Activity, Service die Context-Schnittstelle implementieren, können sie verwendet werden, wenn ein API-Aufruf einen Context-Parameter benötigt
quelle
Context
bedeutet Komponente (oder Anwendung) in verschiedenen Zeiträumen. Wenn ich zwischen 13 und 14 Uhr so viele Lebensmittel esse, wird mein damaliger Kontext verwendet, um auf alle Methoden (oder Ressourcen) zuzugreifen, die ich während dieser Zeit verwende. Inhalt ist eine Komponente (Anwendung) für eine bestimmte Zeit.Context
Die Anzahl der Anwendungskomponenten ändert sich ständig basierend auf dem zugrunde liegenden Lebenszyklus der Komponenten oder der Anwendung. Zum Beispiel innerhalb von onCreate () einesActivity
,getBaseContext()
- gibt dascontext
anActivity
, was vom Konstruktor der Aktivität festgelegt (erstellt) wird.getApplicationContext()
- gibt dasContext
Setup (erstellt) während der Erstellung der Anwendung.Hinweis:
<application>
Enthält alle Android-Komponenten.Wenn Sie
getApplicationContext()
von einer beliebigen Komponente aus aufrufen, rufen Sie den gemeinsamen Kontext der gesamten Anwendung auf.Context
wird vom System basierend auf dem Lebenszyklus der Komponenten ständig geändert.quelle
Stellen Sie sich den Kontext als eine Box mit verschiedenen Ressourcen vor: Zeichenfolge, Farben und Schriftarten. Wenn Sie eine Ressource benötigen, wenden Sie sich an dieses Feld. Wenn Sie den Bildschirm drehen, ändert sich dieses Feld, da sich die Ausrichtung im Querformat ändert.
quelle
Context
bedeutet Strom.Context
Verwenden Sie diese Option, um den aktuellen Bildschirm zu bedienen. Ex.1. getApplicationContext ()
2. getContext ()
quelle
Tolle Erklärungen! Um all das zu ergänzen, fand ich dieses von MindOrks sehr hilfreich und zeigt sogar einige grundlegende Anwendungsfälle, um Ihre Gedanken in Schwung zu bringen:
Grundlegendes zum Kontext in der Android-Anwendung
quelle
In Java bezieht sich dieses Schlüsselwort auf den Status des aktuellen Objekts der Anwendung.
Ebenso haben wir in einer Alternative
Context
in der Android-Entwicklung.Dies kann entweder explizit oder implizit definiert werden.
quelle
this
funktioniert nur bei Aktivitäten. Der Kontext ist keine Alternative zu "diesem" - der Kontext wird für den Zugriff auf Systemfunktionen und vieles mehr verwendet. Sie vereinfachen den Kontext zu stark und verpassen damit den Hauptpunkt.Dieses Attribut gibt an, welcher Aktivität dieses Layout standardmäßig zugeordnet ist .
quelle