2012-04-01 63 views
4

如果我通過以下方式從Activity1啓動Activity2:startActivity(Activity2);首先執行的是:onStop()(Activity1)或onStart()(Activity2)?Android活動生命週期:新活動開始時的狀態順序

他們同時工作還是輪流工作?如果一個接一個,首先是什麼?

所以一般情況下:如果這個訂單存在,第一個活動開始第二個活動的狀態順序是什麼?

+0

只需重寫activity1中的onStop()和activity2中的onStart(),放置一些日誌記錄並查看哪個日誌記錄先到達。 – hovanessyan 2012-04-01 09:41:35

+0

http://stackoverflow.com/a/8516056/265167 – 2012-04-01 10:14:23

回答

3

關鍵是瞭解活動是如何開始的。當您在startActivity()方法中發佈Intent時,您只需要請求系統啓動此活動。下一個系統嘗試啓動Activity2並將消息發送到Activity1。訂單未確定,可能因不同情況而有所不同。

看起來像我前面回答是錯誤的情況時,這兩個活動的工作原理是相同的過程中(APP) 正如指出的丹尼爾·波波夫:https://developer.android.com/guide/components/activities/activity-lifecycle.html(協調活動部分)

+3

訂單已確定 - http://developer.android.com/guide/components/activities.html#CoordinatingActivities – 2014-10-28 10:33:20

+1

Android開發人員網站已更新,「協調活動」部分是在https://developer.android.com/guide/components/activities/activity-lifecycle.html – Sungam 2017-02-28 20:36:37

0

使用日誌將日誌發佈到Logcat。

Log.v("STATE", "Pause...and so on"); 
1

當過我們的第一個活動到第二則 導航首先調用onPause()方法,然後調用onStop(),然後調用第二個activity的onCreate()方法,然後調用onStart()和onResume()。通過按壓返回鍵導航回到firstactivity當

另外

的onPause()第二活性的方法被稱爲隨後的onStop(),然後第一個活動的方法onRestart()由在onStart稱爲後跟()然後onResume()。

+0

我剛添加了一些日誌代碼到我的應用程序,我看到一個不同的圖片:1)Activity1 onPause()2 )Activity2 onStart 3)activity2 onResume()4)Activity1 onStop()。 – 2013-12-19 20:07:47

9

根據文檔,Activity1上的onStart在Activity1上的onStop之前被調用(或者,如果您願意,則在調用Activity1上的onStop之前,os等待Activity2上的Start開始完成)。

從​​:

生命週期回調的順序是明確定義的,特別是當這兩種活動都在相同的過程和一個在開始其他。以下是活動A啓動活動B時發生的操作順序:

活動A的onPause()方法執行。 活動B的onCreate(),onStart()和onResume()方法按順序執行。 (活動B現在擁有用戶焦點。) 然後,如果活動A在屏幕上不再可見,則執行其onStop()方法。

+0

Android開發人員網站已更新,「協調活動」部分位於https://developer.android.com/guide/components/activities/activity-lifecycle.html – Sungam 2017-02-28 20:37:08

1

讓說活動A由調用StartActivity(意向)方法開始活動B然後生命週期呼叫是這樣的: -

  • 甲OnCreate中()
  • A於開始()
  • 一個的onResume()

Now按鈕點擊startActivity(意向)

  • 甲的onPause()

  • 乙調用onStart()

  • 乙的onResume()

  • 甲的onStop()

... ..............如果您按下返回按鈕活動B然後生命週期呼叫將...

  • 乙的onPause()

  • 甲onRestart()

  • 甲調用onStart()

  • 甲的onResume()

  • B onDestory()

現在多一個場景

  • A 「從活動由上按鈕點擊呼叫StartActivity(意圖),並使用光潔度()方法中的OnStart()方法在活性B A開始活動B」的onPause()

  • 乙調用onStart()

  • 甲的onResume()

  • 乙的onStop()

  • 乙onDestory()

0

生命週期回調的順序是明確定義的,特別是當這兩種活動都在相同的過程和一個在開始其他。以下是活動A啓動活動B時發生的操作順序:

活動A的onPause()方法執行。 Activity B的onCreate(),onStart()和onResume()方法按順序執行。 (活動B現在擁有用戶焦點。)然後,如果活動A在屏幕上不再可見,則執行其onStop()方法。