2012-04-01 10 views
4

Wenn ich Activity2 von Activity1 auf diese Weise starten: startActivity(Activity2); was zuerst ausgeführt: onStop() (Activity1) oder onStart() (Activity2)?Android-Aktivität Lifecycle: Reihenfolge, wenn neue Aktivität beginnt

Funktionieren sie gleichzeitig oder nacheinander? Wenn einer nach dem anderen, was ist zuerst?

Also im Allgemeinen: Was ist die Statusreihenfolge der Aktivität, wenn die erste Aktivität an zweiter Stelle beginnt, wenn diese Reihenfolge existiert?

+0

Einfach überschreiben Sie die onStop() in activity1 und onStart() in activity2, legen Sie einige Protokollierung und sehen, welche Protokollierung zuerst kommt. – hovanessyan

+0

http://Stackoverflow.com/a/8516056/265167 –

Antwort

3

Der Schlüssel ist zu verstehen, wie die Aktivität gestartet wird. Wenn Sie Intent in der Methode startActivity() veröffentlichen, fragen Sie einfach nach dem System, um diese Aktivität zu starten. Nächstes System versucht Activity2 zu starten und sendet eine Nachricht an Activity1. Die Reihenfolge ist unbestimmt und kann in verschiedenen Situationen unterschiedlich sein.

Sieht aus wie mein anwer für Situation falsch war, wenn beide Tätigkeiten im gleichen Prozess funktionieren (app) Wie bereits Daniil Popov: https://developer.android.com/guide/components/activities/activity-lifecycle.html (Koordinierende Aktivitäten Abschnitt)

+3

Die Reihenfolge ist festgelegt - http://developer.android.com/guide/components/activities.html#CoordinationActivities –

+1

Android Developer-Website wird aktualisiert und die "koordinierenden Aktivitäten" Abschnitt ist unter https://developer.android.com/guide/components/activities/activity-lifecycle.html – Sungam

0

Verwenden Sie Protokoll, um Protokolle an Logcat zu senden.

1

Wann immer wir von dem ersten Aktivität navigieren zu zweiten dann Die Methode onPause() wird aufgerufen, gefolgt von onStop(). Anschließend wird die Methode onCreate() der zweiten Aktivität aufgerufen, gefolgt von onStart() und onResume().

Auch wenn zurück zu firstactivity Navigieren durch Rück Taste

onPause() Methode der zweiten Aktivität wird durch die OnStop(), und dann geht das Verfahren onRestart() der ersten Aktivität genannt gefolgt wird von onStart gefolgt() aufgerufen und dann onResume().

+0

Ich habe gerade einige Logging-Code in meine App hinzugefügt und ich sehe ein anderes Bild: 1) Activity1 onPause() 2) Activity2 onStart 3) activity2 onResume() 4) Activity1 onStop(). –

9

Gemäß der Dokumentation wird der onStart auf Activity2 vor onStop auf Activity1 aufgerufen (oder, wenn Sie möchten, wartet das os aufStart auf Activity2, bevor AcerStop auf Activity1 aufgerufen wird).

Von http://developer.android.com/guide/topics/fundamentals/activities.html:

Die Reihenfolge der Lifecycle-Rückrufe ist gut definiert, insbesondere dann, wenn die beiden Tätigkeiten im gleichen Prozess sind und man das andere beginnt. Hier ist die Reihenfolge der Vorgänge, die beim Start von Aktivität A ausgeführt werden. B:

Die Methode onPause() von Activity A wird ausgeführt. Die onCreate() -, onStart() - und onResume() - Methoden der Aktivität B werden nacheinander ausgeführt. (Aktivität B hat jetzt Benutzerfokus.) Wenn Aktivität A nicht mehr auf dem Bildschirm angezeigt wird, wird die onStop() -Methode ausgeführt.

+0

Die Website für Android-Entwickler wurde aktualisiert und der Abschnitt "Koordinierende Aktivitäten" befindet sich unter https://developer.android.com/guide/components/activities/activity-lifecycle.html – Sungam

1

Lassen Sie sagen Aktivität A Aktivität B beginnt von StartActivity Calling (Intent) Methode dann Lifecycle-Aufruf wie folgt sein: -

  • A oncreate()
  • A auf Start()
  • A onResume()

Jetzt Knopf klicken für startActivity (Vorsatz)

  • onPause A()

  • B onStart()

  • B onResume()

  • OnStop A()

... .............. Wenn Sie die Taste von drücken Aktivität B dann wird LifeCycle Anruf ...

  • B onPause()

  • A onRestart()

  • A onStart()

  • A onResume() sein

  • B onDestory()

Jetzt ein weiteres Szenario "Von Activity Ein Startaktivität B durch StartActivity (Intent) auf Tastenklick aufrufen und finish() Methode innerhalb onstart() -Methode auf Aktivität B"

  • A onPause()

  • B onStart()

  • onResume A()

  • B OnStop()

  • B onDestory()

0

Die Reihenfolge der Lifecycle-Rückrufe gut definiert ist, insbesondere wenn die beiden Aktivitäten in dem gleichen Prozess sind, und man die anderen Start. Hier ist die Reihenfolge der Vorgänge, die beim Start von Aktivität A ausgeführt werden. B:

Die Methode onPause() von Activity A wird ausgeführt. Die Methoden onCreate(), onStart() und onResume() der Aktivität B werden nacheinander ausgeführt. (Aktivität B hat jetzt Benutzerfokus.) Wenn Aktivität A nicht mehr auf dem Bildschirm angezeigt wird, wird die onStop() -Methode ausgeführt.

Verwandte Themen