Heim Java javaLernprogramm Detaillierte Erläuterung des Lebenszyklus von Aktivitäten in der Android-Entwicklung

Detaillierte Erläuterung des Lebenszyklus von Aktivitäten in der Android-Entwicklung

Jan 07, 2017 pm 04:19 PM

Die Beispiele in diesem Artikel beschreiben den Lebenszyklus von Android-Aktivitäten. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Die Aktivitätsklasse befindet sich im Paket android.app und das Vererbungssystem ist wie folgt:

1.Java.lang .Object

2. android.content.Context

3.android.app.ApplicationContext

4.android.app.Activity

Aktivität ist separat und zur Abwicklung von Benutzeroperationen verwendet. Fast alle Aktivitäten müssen sich mit Benutzern befassen, sodass Entwickler die Benutzeroberfläche über die setContentView(View)-Schnittstelle in das von der Aktivität erstellte Fenster einfügen können kann auch auf andere Weise implementiert werden: Als schwebendes Fenster (über die Themensammlung von windowIsFloating) oder eingebettet in andere Aktivitäten (mithilfe von ActivityGroup). Die meisten Aktivitätsunterklassen müssen die folgenden zwei Schnittstellen implementieren:

① Die onCreate(Bundle)-Schnittstelle ist der Ort, an dem die Aktivität initialisiert wird. Hier können Sie normalerweise setContentView(int) aufrufen, um die in der Ressourcendatei definierte Benutzeroberfläche festzulegen. Verwenden Sie findViewById(int), um das in der Benutzeroberfläche definierte Fenster abzurufen.

② Die onPause()-Schnittstelle ist der Ort, an dem der Benutzer bereit ist, die Aktivität zu verlassen. Hier sollten alle Änderungen übermittelt werden (normalerweise von ContentProvider verwendet). Daten speichern).

Um Context.startActivity() verwenden zu können, müssen für alle Aktivitätsklassen verwandte „Aktivitäts“-Elemente in der Datei AndroidManifest.xml definiert sein.

Der Aktivitätskurs ist ein wichtiger Teil des Android-Anwendungslebenszyklus.

Aktivitätslebenszyklus

Aktivitäten im System werden von einem Aktivitätsstapel verwaltet. Wenn eine neue Aktivität gestartet wird, wird sie oben auf dem Stapel platziert und wird zu einer laufenden Aktivität. Die vorherige Aktivität bleibt im Stapel und wird nicht mehr im Vordergrund platziert, bis die neue Aktivität beendet wird.

Aktivität hat im Wesentlichen vier verschiedene Zustände:

1. Im Vordergrund des Bildschirms (oben im Aktivitätsstapel) wird sie als aktiver oder laufender Zustand (aktiv oder ausgeführt) bezeichnet

2. Wenn eine Aktivität den Fokus verliert, aber immer noch sichtbar ist (eine neue nicht bildschirmfüllende Aktivität oder eine transparente Aktivität wird oben auf dem Stapel platziert), wird sie als „Pause“ bezeichnet. Eine angehaltene Aktivität bleibt aktiv (behält alle Status-, Mitgliedsinformationen und Verbindung zum Fenstermanager bei), wird jedoch beendet, wenn der Systemspeicher extrem niedrig ist.

3. Wenn eine Aktivität vollständig von einer anderen Aktivität abgedeckt wird, wird sie als „Gestoppt“ bezeichnet. Es behält weiterhin alle Status- und Mitgliedsinformationen bei, ist jedoch nicht mehr sichtbar, sodass sein Fenster ausgeblendet ist und die gestoppte Aktivität beendet wird, wenn der Systemspeicher an anderer Stelle verwendet werden muss.

4. Wenn sich eine Aktivität im Status „Pause“ oder „Gestoppt“ befindet, kann das System die Aktivität aus dem Speicher löschen: entweder muss die Aktivität beendet werden oder sie wird direkt beendet Verfahren. Wenn die Aktivität dem Benutzer erneut angezeigt wird, muss sie neu gestartet und auf den vorherigen Status zurückgesetzt werden.

Die folgende Abbildung zeigt die Callback-Schnittstelle von Activity. Entwickler können die Implementierung überladen, um relevanten Code auszuführen. Status.

Detaillierte Erläuterung des Lebenszyklus von Aktivitäten in der Android-Entwicklung

Im Bild oben hat Aktivität drei Schlüsselzyklen:

1. Der gesamte Lebenszyklus, beginnend von onCreate(Bundle) bis onDestroy() Finish . Die Aktivität legt den gesamten „globalen“ Status in onCreate() fest und gibt alle Ressourcen in onDestory() frei. Wenn beispielsweise bei einer Aktivität im Hintergrund ein Thread zum Herunterladen von Daten aus dem Netzwerk ausgeführt wird, kann die Aktivität den Thread in onCreate() erstellen und den Thread in onDestory() stoppen.

2. Der sichtbare Lebenszyklus beginnt mit onStart() und endet mit onStop(). Während dieser Zeit ist die Aktivität auf dem Bildschirm sichtbar, befindet sich jedoch möglicherweise nicht im Vordergrund und kann nicht mit dem Benutzer interagieren. Zwischen diesen beiden Schnittstellen müssen die dem Benutzer angezeigten UI-Daten und -Ressourcen verwaltet werden. Sie können beispielsweise einen IntentReceiver in onStart registrieren, um auf Änderungen in der UI zu warten, die durch Datenänderungen verursacht werden. Sie können es in onStop() registrieren. Die Registrierung in aufheben. Sowohl onStart() als auch onStop() können mehrmals aufgerufen werden, da die Aktivität jederzeit zwischen sichtbar und ausgeblendet wechseln kann.

3. Der Lebenszyklus des Vordergrunds beginnt mit onResume() und endet mit onPause(). In dieser Zeit steht die Aktivität im Vordergrund aller Aktivitäten und interagiert mit dem Benutzer. Aktivitäten können häufig zwischen fortgesetzten und pausierten Zuständen wechseln, beispielsweise wenn das Gerät sich auf den Ruhezustand vorbereitet, wenn ein Aktivitätsverarbeitungsergebnis gesendet wird und wenn eine neue Absicht gesendet wird. Daher sollte der Code in diesen Schnittstellenmethoden sehr leichtgewichtig sein.

Der gesamte Lebenszyklus der Aktivität ist in den folgenden Schnittstellenmethoden definiert, und alle Methoden können überladen werden. Alle Aktivitäten müssen onCreate(Bundle) implementieren, um die Einstellungen zu initialisieren. Derzeit müssen die meisten Aktivitäten auch die onFreeze()-Schnittstelle implementieren, um den Status von onCreate(Bundle) wiederherzustellen die Einstellung.

public class Activity extends ApplicationContext {
protected void onCreate(Bundle icicle);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onFreeze(Bundle outIcicle);
protected void onPause();
protected void onStop();
protected void onDestroy();
}
Nach dem Login kopieren

Ich hoffe, dass dieser Artikel für alle hilfreich ist, die sich mit der Android-Programmierung befassen.

Ausführlichere Artikel zum Lebenszyklus von Aktivitäten in der Android-Entwicklung finden Sie auf der chinesischen PHP-Website!


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte Mar 07, 2025 pm 06:09 PM

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Mar 17, 2025 pm 05:35 PM

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Mar 17, 2025 pm 05:46 PM

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?

Node.js 20: wichtige Leistungssteigerung und neue Funktionen Node.js 20: wichtige Leistungssteigerung und neue Funktionen Mar 07, 2025 pm 06:12 PM

Node.js 20: wichtige Leistungssteigerung und neue Funktionen

ICEBERG: Die Zukunft von Data Lake Tabellen ICEBERG: Die Zukunft von Data Lake Tabellen Mar 07, 2025 pm 06:31 PM

ICEBERG: Die Zukunft von Data Lake Tabellen

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Mar 17, 2025 pm 05:44 PM

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben Mar 07, 2025 pm 05:52 PM

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben

So teilen Sie Daten zwischen Schritten in der Gurke So teilen Sie Daten zwischen Schritten in der Gurke Mar 07, 2025 pm 05:55 PM

So teilen Sie Daten zwischen Schritten in der Gurke

See all articles