it-swarm.com.de

Was ist "Kontext" auf Android?

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

Ich habe es auf der Entwicklerseite gelesen, kann es aber nicht klar verstehen.

1821
Brigadier

Einfach gesagt:

Wie der Name schon sagt, handelt es sich um den Kontext des aktuellen Status der Anwendung/des Objekts. Damit können neu erstellte Objekte nachvollziehen, was passiert ist. In der Regel rufen Sie es auf, um Informationen zu einem anderen Teil Ihres Programms (Aktivität und Paket/Anwendung) abzurufen.

Sie können den Kontext abrufen, indem Sie getApplicationContext(), getContext(), getBaseContext() oder this aufrufen (wenn Sie sich in einer Klasse befinden, die sich von Context erstreckt, z. B. Application, Activity , Service- und IntentService-Klassen).

Typische Verwendung des Kontexts:

  • Neue Objekte erstellen: Neue Ansichten, Adapter, Listener erstellen:

    TextView tv = new TextView(getContext());
    ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
    
  • Zugriff auf gemeinsame Standardressourcen: Dienste wie LAYOUT_INFLATER_SERVICE, SharedPreferences:

    context.getSystemService(LAYOUT_INFLATER_SERVICE)
    getApplicationContext().getSharedPreferences(*name*, *mode*);
    
  • Implizit auf Komponenten zugreifen: In Bezug auf Inhaltsanbieter, Broadcasts und Absichten

    getApplicationContext().getContentResolver().query(uri, ...);
    
1398
Sameer Segal

Definition des Kontexts

  • Kontext repräsentiert Umgebungsdaten
  • Es bietet Zugriff auf Dinge wie Datenbanken

Einfachere Begriffe (Beispiel 1)

  • Betrachten Sie Person-X ist der CEO eines Start-up-Software-Unternehmens.

  • In der Firma ist ein leitender Architekt anwesend. Dieser leitende Architekt erledigt alle Arbeiten in der Firma, die beispielsweise Datenbanken, Benutzeroberflächen usw. betreffen.

  • Jetzt stellt der CEO einen neuen Entwickler ein.

  • Es ist der Architekt, der die Verantwortung der neu eingestellten Person auf der Grundlage der Fähigkeiten der neuen Person festlegt, ob sie an der Datenbank oder der Benutzeroberfläche usw. arbeiten wird.

Einfachere Begriffe (Beispiel 2)

  • Es ist wie der Zugriff der Aktivität Android auf die Ressource der App.

  • Es ist ähnlich wie in einem Hotel, wenn Sie Frühstück, Mittag- und Abendessen zu den richtigen Zeiten wünschen, oder?

  • Es gibt viele andere Dinge, die Sie während des Aufenthalts mögen. Wie kommst du an diese Dinge?

  • Sie bitten den Zimmerservice, diese Sachen für Sie mitzubringen.

  • Hier ist der Zimmerservice der Kontext, in dem Sie die einzige Aktivität sind und das Hotel Ihre App sein soll. Schließlich müssen Frühstück, Mittag- und Abendessen die Ressourcen sein.


Dinge, die den Kontext betreffen, sind:

  1. Laden einer Ressource.
  2. Eine neue Aktivität starten.
  3. Ansichten erstellen.
  4. Erhalt des Systemdienstes.

Kontext ist die Basisklasse für Aktivität , Service , Anwendung usw

Eine andere Möglichkeit, dies zu beschreiben: Betrachten Sie den Kontext als ferngesteuert von einem Fernsehgerät und den Kanälen im Fernsehgerät als Ressourcen, Dienste, Verwendung von Absichten usw. - - - Hier fungiert ferngesteuert als Zugriff, um Zugriff auf alle verschiedenen Ressourcen zu erhalten in den Vordergrund.

  • Remote hat also Zugriff auf Kanäle wie Ressourcen, Dienste, mit Absichten usw. ....

  • Ebenso ... Wer Zugriff auf Remote hat, hat natürlich Zugriff auf alle Dinge wie Ressourcen, Dienste, mit Absichten usw.


Verschiedene Methoden, mit denen Sie den Kontext abrufen können

  • getApplicationContext()
  • getContext()
  • getBaseContext()
  • oder this (wenn in der Aktivitätsklasse)

Beispiel:

TextView TV=new TextView(this);

this -> bezieht sich auf den Kontext der aktuellen Aktivität.

468
Devrath

Ein Kontext ist ein Handle für das System. Es bietet Dienste wie das Auflösen von Ressourcen, den Zugriff auf Datenbanken und Einstellungen und so weiter. Eine Android App hat Aktivitäten. Der Kontext ist wie ein Handle für die Umgebung, in der Ihre Anwendung derzeit ausgeführt wird. Das Aktivitätsobjekt erbt das Kontextobjekt.

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

113
angryITguy

Context ist eine "Schnittstelle" zu den globalen Informationen über eine Anwendungsumgebung. In der Praxis ist Context tatsächlich eine abstrakte Klasse, deren Implementierung vom Android System bereitgestellt wird.

Es ermöglicht den Zugriff auf anwendungsspezifische Ressourcen und Klassen sowie Up-Calls für Vorgänge 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 die Stammklasse dieser Hierarchie ist. Insbesondere ist hervorzuheben, dass Activity ein Nachkomme von Context ist.

Activity diagram

81
Dmytro Danylyk

Was ist Context genau?

Gemäß der Referenzdokumentation zu Android handelt es sich um eine Entität, die verschiedene Umgebungsdaten darstellt. Es bietet Zugriff auf lokale Dateien, Datenbanken, der Umgebung zugeordnete Klassenladeprogramme, Dienste (einschließlich Dienste auf Systemebene) und mehr. In diesem Buch und bei der täglichen Codierung mit Android wird der Kontext häufig weitergegeben.

Aus dem Buch " Android in der Praxis ", p. 60.

Mehrere Android APIs benötigen Context als Parameter

Wenn 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 feststellen, dass eine Aktivität oder ein Dienst normalerweise als Context verwendet wird. Dies funktioniert, weil sich diese beiden Klassen von Context erstrecken.

67
s0ld13r

Ein Android Kontext ist ein Schnittstelle (im allgemeinen Sinne, nicht im Sinne von Java; in Java Context ist eigentlich eine abstrakte Klasse!), die den Zugriff auf anwendungsspezifische Ressourcen und Klassen sowie Informationen zur Anwendungsumgebung ermöglicht.

Wenn Ihre Android App eine Web-App wäre, wäre Ihr Kontext so ähnlich wie ServletContext (hier mache ich keinen genauen Vergleich).

Ihre Aktivitäten und Dienste erweitern auch Context, sodass sie alle diese Methoden erben, um auf die Umgebungsinformationen zuzugreifen, in denen die App ausgeführt wird.

44
naikus

Einfaches Beispiel, um context in Android zu verstehen:

Jeder Chef hat einen Assistenten, der sich um alle weniger wichtigen und zeitraubenden Aufgaben kümmert. Wenn eine Feile oder eine Tasse Kaffee benötigt wird, ist ein Assistent auf der Flucht. Einige Chefs wissen kaum, was im Büro vor sich geht, und fragen daher 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 Anwendung Android

Assistent - ist Kontext

Dateien/Tasse Kaffee - sind Ressourcen

Wir rufen im Allgemeinen den Kontext auf, wenn wir Informationen über verschiedene Teile unserer Anwendung wie Aktivitäten, Anwendungen usw. erhalten möchten.

Einige Operationen (Dinge, bei denen der Assistent benötigt wird), bei denen der Kontext beteiligt ist:

  • Laden gemeinsamer Ressourcen
  • Dynamische Ansichten erstellen
  • Anzeigen von Toastnachrichten
  • Startaktivitäten usw.

Verschiedene Arten, Kontext zu erhalten:

getContext()

getBaseContext()

getApplicationContext()

this
43
Parsania Hardik
  • Context repräsentiert ein Handle zum Abrufen von Umgebungsdaten.
  • Die Klasse Context selbst wird als abstrakt deklariert, deren Implementierung vom Betriebssystem Android bereitgestellt wird.
  • Context ist wie eine Fernbedienung eines Fernsehgeräts und Kanäle im Fernsehgerät enthalten Ressourcen, Dienste usw. enter image description here

Was kannst du damit machen?

  • Ressource wird geladen.
  • Eine neue Aktivität starten.
  • Ansichten erstellen.
  • Systemservice anfordern.

Wege zum Kontext:

  • getApplicationContext()
  • getContext()
  • getBaseContext()enter image description hereenter image description here
29
user4813855

Einfach für Neulinge da rausstellen;

Verstehe also zuerst den Wortkontext:

In Englisch-lib. es bedeutet:

"Die Umstände, die den Rahmen für ein Ereignis, eine Aussage oder eine Idee bilden und in Bezug auf die es vollständig verstanden und bewertet werden kann."

"Die Teile von etwas Geschriebenem oder Gesprochenem, die unmittelbar vor und nach einem Wort oder einer Passage stehen und dessen Bedeutung klarstellen."

Nehmen Sie nun das gleiche Verständnis zur Programmierwelt:

kontext des aktuellen Status der Anwendung/des Objekts. Damit können neu erstellte Objekte nachvollziehen, was passiert ist. In der Regel rufen Sie es auf, um Informationen zu einem anderen Teil Ihres Programms (Aktivität, Paket/Anwendung) abzurufen.

Sie können den Kontext abrufen, indem Sie getApplicationContext(), getContext(), getBaseContext() oder this (in der Aktivitätsklasse) aufrufen.

Verwenden Sie folgenden Code, um Context Anywhere in der Anwendung abzurufen:

Erstellen Sie eine neue Klasse AppContext in Ihrer Android Anwendung

public class AppContext extends Application {

    private static Context context;

    public void onCreate(){
        super.onCreate();
        AppContext.context = getApplicationContext();
    }

    public static Context getAppContext() {
        return AppContext.context;
    }
}

Wenn Sie nun den Anwendungskontext in einer Nicht-Aktivitätsklasse möchten, rufen Sie diese Methode auf und Sie haben den Anwendungskontext.

Ich hoffe das hilft ;)

17
star18bit

Stellen Sie sich das als VM vor, das den Prozess, in dem die App oder der Dienst ausgeführt wird, gesperrt hat. Die gesperrte Umgebung hat Zugriff auf eine Reihe zugrunde liegender Systeminformationen und bestimmte zulässige Ressourcen. Sie benötigen diesen Kontext, um auf diese Dienste zugreifen zu können.

15
Erol

Kontext ist ein Verweis auf das aktuelle Objekt als solches. Außerdem ermöglicht der Kontext den Zugriff auf Informationen zur Anwendungsumgebung.

15
devdas

Die Klasse Android.content.Context stellt die Verbindung zum Android System und den Ressourcen des Projekts her. Es ist die Schnittstelle zu globalen Informationen über die Anwendungsumgebung.

Der Kontext bietet auch Zugriff auf Android Dienste, z. der Ortungsdienst.

Aktivitäten und Services erweitern die Klasse Context.

12
Yashvir yadav

Kontext ist Instanzen der Klasse Android.content.Context stellen die Verbindung zum Android System her, das die Anwendung ausführt. Beispielsweise können Sie 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 Services erweitern die Context-Klasse. Sie können daher direkt für den Zugriff auf den Kontext verwendet werden.

8
chandan kumar

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 Operationen auf Anwendungsebene wie launching activities, broadcasting and receiving intents, etc.

Hier ist ein Beispiel

_ public class MyActivity extends Activity {

      public void Testing() {

      Context actContext = this; /*returns the Activity Context since   Activity extends Context.*/

      Context appContext = getApplicationContext();    /*returns the context of the single, global Application object of the current process. */

      Button BtnShowAct1 = (Button) findViewById(R.id.btnGoToAct1);
      Context BtnContext = BtnShowAct1.getContext();   /*returns the context of the View. */
_

Weitere Informationen finden Sie unter http://developer.Android.com/reference/Android/content/Context.html

8
IntelliJ Amiya

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 Interaktion der aktuellen Aktivität mit der Umgebung außerhalb von Android wie lokalen Dateien, Datenbanken, der Umgebung zugeordneten 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 und so weiter. Eine Android App hat Aktivitäten. Es ist wie ein Handle für die Umgebung, in der Ihre Anwendung derzeit ausgeführt wird. Das Aktivitätsobjekt erbt das Kontextobjekt.

Verschiedene Methoden zum Aufrufen des Kontexts 1. getApplicationContext (), 2. getContext (), 3. getBaseContext () 4. oder dies (in der Aktivitätsklasse).

7
santoshpatmca

Der Kontext dient im Wesentlichen dem Ressourcenzugriff und dem Abrufen der Umgebungsdetails der Anwendung (für den Anwendungskontext) oder 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. Klicken Sie dazu auf hier

7
Jaber Shabeek

Kontext bedeutet, Android zu erfahren, für welche Aktivität ich mich entscheiden oder handeln soll.

1 - Toast.makeText(context, "Enter All Details", Toast.LENGTH_SHORT).show(); wird hier verwendet. Context context = ActivityName.this;

2 -startActivity(new Intent(context,LoginActivity.class));

in diesem Zusammenhang bedeutet, von welcher Aktivität aus Sie zu einer anderen Aktivität wechseln möchten. context oder ActivityName.this ist schneller als getContext und getApplicatinContext.

5
Deven Chavda

Boss Assistant Analogy

Lassen Sie uns eine kleine Analogie ziehen, bevor wir tief in die Technik des Kontexts eintauchen

Jeder Chef hat einen Assistenten oder jemanden (Laufburschen), der weniger wichtige und zeitaufwändigere Dinge für ihn tut. Wenn sie beispielsweise eine Datei oder einen Kaffee benötigen, wird ein Assistent ausgeführt. Boss wird nicht wissen, was im Hintergrund vor sich geht, aber die Datei oder die Aufgabe wird übergeben

Also hier
Boss - Android Anwendung
Assistent - Kontext
Akte oder Tasse Kaffee - Ressource

Welche offizielle Android Entwicklerseite sagt über Kontext

Der Kontext ist Ihr Zugriffspunkt für anwendungsbezogene Ressourcen

Sehen wir uns einige solcher Ressourcen oder Aufgaben an

  • Eine Aktivität starten.

  • Abrufen des absoluten Pfads zum anwendungsspezifischen Cache-Verzeichnis im Dateisystem.

  • Ermitteln, 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, wird sie direkt an Context (Access Point) weitergeleitet, und die Klasse Context gibt ihm die Ressourcen zurück ( Absicht in diesem Fall).

Wie jede andere Klasse hat auch die Klasse Context Felder und Methoden.
Sie können mehr über Context in der offiziellen Dokumentation erfahren. Sie behandelt so ziemlich alles, verfügbare Methoden, Felder und sogar die Verwendung von Feldern mit Methoden.

5
Rohit Singh

A Context ist das, was die meisten von uns Bewerbung nennen würden. Es wird vom Android System erstellt und kann nur das tun, was eine Anwendung kann. In Tomcat ist ein Kontext auch das, was ich eine Anwendung nennen 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 zu sagen, dass ein Kontext Ihre aktuelle Anwendung ist, wird Ihnen helfen, zu verstehen, was Sie in Methodenparameter einfügen.

5
Nicolas Zozol

Instanzen der Klasse Android.content.Context stellen die Verbindung zum System Android her, das die Anwendung ausführt. Beispielsweise können Sie 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 Services erweitern die Context-Klasse. Sie können daher direkt für den Zugriff auf den Kontext verwendet werden.

4
Mubarak

Einfach ausgedrückt, Androids Context ist ein Chaos, das Sie nicht lieben werden, bis Sie aufhören, sich Sorgen zu machen.

Android Contexts sind:

  • Gott-Objekte.

  • Sie möchten Ihre gesamte Anwendung weitergeben, wenn Sie mit der Entwicklung für Android beginnen, dies aber vermeiden, wenn Sie sich ein wenig dem Programmieren, Testen und dem Android selbst 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 Aufblasen 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 sich unterscheiden).

2
Pavlus

Der Kontext ist die Android spezifische API für jede App Sandbox , die den Zugriff auf private App-Daten wie Ressourcen, Datenbanken, private Verzeichnisse, Einstellungen, Einstellungen ... ermöglicht.

Die meisten privaten Daten 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

2
k3b

Wenn Sie den Kontext mit anderen bekannten Klassen in Android verbinden möchten, beachten Sie diese Struktur:

Context <ContextWrapper <Anwendung

Kontext <ContextWrapper <ContextThemeWrapper <Aktivität

Context <ContextWrapper <ContextThemeWrapper <Activity <ListActivity

Context <ContextWrapper <Service

Context <ContextWrapper <Service <IntentService

Alle diese Klassen sind also auf ihre eigene Weise Kontexte. Sie können Service und ListActivity in Context umwandeln, wenn Sie dies wünschen. Aber wenn Sie genau hinschauen, erben einige Klassen auch das Thema. In Aktivität oder Fragment möchten Sie, dass die Themen Ihren Ansichten zugewiesen werden, aber es interessiert Sie beispielsweise nicht die Serviceklasse .

Ich erkläre den Unterschied in den Kontexten hier .

2
lomza

Context bedeutet Komponente (oder Anwendung) in verschiedenen Zeiträumen. Wenn ich zwischen 13 und 14 Uhr so ​​viele Lebensmittel esse, wird mein Kontext dieser Zeit 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 von Anwendungskomponenten ändert sich ständig basierend auf dem zugrunde liegenden Lebenszyklus der Komponenten oder der Anwendung. Zum Beispiel innerhalb des onCreate () eines Activity,

getBaseContext() - gibt die context der Activity an, die vom Konstruktor der Aktivität festgelegt (erstellt) wurde. getApplicationContext() - gibt das Setup von Context (erstellt) während der Erstellung der Anwendung an.

Hinweis: <application> enthält alle Android Komponenten.

<application>
    <activity> .. </activity> 

    <service>  .. </service>

    <receiver> .. </receiver>

    <provider> .. </provider>
</application> 

Wenn Sie also getApplicationContext() aus einer beliebigen Komponente aufrufen, rufen Sie den allgemeinen Kontext der gesamten Anwendung auf.

Context wird vom System basierend auf dem Lebenszyklus von Komponenten ständig geändert.

2
Uddhav Gautam