Android->Detaillierte Erläuterung der vier Startmodi für Aktivität und onNewIntent-Aufrufzeitpunkt

Detaillierte Erläuterung der vier Startmodi der Aktivität::

1. Standard

Im Standardstartmodus wird die Aktivität jedes Mal erstellt, wenn die Aktivität aktiviert und im Aufgabenstapel platziert wird, und onNewIntent() wird niemals aufgerufen.

2. SingleTop

Wenn sich zufällig eine Instanz der Aktivität oben auf dem Aufgabenstapel befindet, wird die Instanz wiederverwendet und ihr onNewIntent() aufgerufen. Andernfalls wird eine neue Instanz erstellt und oben auf dem Stapel platziert (sogar). Wenn die Aktivitätsinstanz bereits auf dem Stapel vorhanden ist, solange sie nicht mehr oben auf dem Stapel ist, werden Instanzen erstellt, ohne onNewIntent () aufzurufen (was dem Standardmodus entspricht).

3. Einzelaufgabe

Wenn im Aufgabenstapel bereits eine Instanz der Aktivität vorhanden ist, wird die Instanz wiederverwendet (onNewIntent() der Instanz wird aufgerufen). Bei der Wiederverwendung wird die Instanz wieder an die Spitze des Stapels gebracht, sodass alle darüber liegenden Instanzen aus dem Stapel entfernt werden. Wenn die Instanz nicht auf dem Stapel vorhanden ist, wird eine neue Instanz erstellt und auf dem Stapel platziert (onNewIntent() wird zu diesem Zeitpunkt nicht aufgerufen).

4. Einzelinstanz

Erstellen Sie die Aktivitätsinstanz in einem neuen Stapel. Diese Instanz belegt ausschließlich diesen Stapel. Keine andere Instanz wird jemals hinzugefügt und ermöglicht mehreren Anwendungen die gemeinsame Nutzung der Aktivitätsinstanz im Stapel. In diesem Modus verwendet jede Anwendung, die die Aktivität aktiviert, die Instanz im Stapel wieder, sobald eine Instanz der Aktivität in einem Stapel vorhanden ist. Der Effekt entspricht der gemeinsamen Nutzung einer Anwendung durch mehrere Anwendungen. Unabhängig davon, wer die Aktivität aktiviert, treten sie bei den gleichen Stapel. in einer Anwendung.

 

Lebenszyklus der vier Startmodi von Android beim Start:

1. Norm:

Geben Sie zum ersten Mal Folgendes ein: onCreate → onStart
befindet sich oben auf dem Stapel. Geben Sie erneut Folgendes ein: onCreate → onStart
befindet sich nicht oben auf dem Stapel. Geben Sie erneut Folgendes ein: onCreate → onStart.
Von anderen Aktivitäten zurückkehren: onRestart → onStart
und dann zurückkehren nach dem Anwendungswechsel: onRestart → onStart.

2. singleTop:

Zum ersten Mal eingeben: onCreate → onStart
ist oben auf dem Stapel. Erneut eingeben: onNewIntent
ist nicht oben auf dem Stapel. Erneut eingeben: onCreate → onStart.
Rückkehr von anderen Aktivitäten: onRestart → onStart
und dann Rückkehr nach dem Wechsel Anwendungen: onRestart → onStart.

3. Einzelaufgabe:

Geben Sie zum ersten Mal Folgendes ein: onCreate → onStart.
Geben Sie erneut Folgendes ein: onNewIntent
befindet sich nicht oben auf dem Stapel. Geben Sie erneut Folgendes ein: onNewIntent → onRestart → onStart.
Rückkehr von anderen Aktivitäten: onRestart → onStart
und Rückkehr nach dem Wechseln der Anwendungen: onRestart → onStart .

4. SingleInstance:

Geben Sie zum ersten Mal Folgendes ein: onCreate → onStart.
Geben Sie oben im Stapel erneut ein: onNewIntent
befindet sich nicht oben im Stapel. Geben Sie erneut Folgendes ein: onNewIntent → onRestart → onStart.
Von anderen Aktivitäten zurückkehren: onRestart → onStart
und danach zurückkehren Anwendungen wechseln: onRestart → onStart.

Vorsichtsmaßnahmen:

Wenn Sie onNewIntent(intent) aufrufen, müssen Sie setIntent(intent) in der onNewIntent()-Methode verwenden, um den Rückgabewert von getIntent() zu ändern. Andernfalls ruft nachfolgendes getIntent() den alten Intent ab, was zu Datenlese- und Übertragungsfehlern führt!

Supongo que te gusta

Origin blog.csdn.net/zhao8856234/article/details/108336219
Recomendado
Clasificación