2013-07-12 194 views
2

根據Android docs,活動的生命週期如下:的Android間活動的生命週期

  • 的onCreate()
  • 在onStart()
  • 的onResume()
  • 的onPause()
  • onStop()
  • onDestroy()

問題是,如果我有兩個活動(A和B),並且它們不是異常死亡(低內存等):

如何執行順序,當一個人進入後臺而另一個人恢復時/產生的?

  • ...
  • A.onPause()
  • B.onCreate()
  • A.onStop() - B.onStart()同時
  • B.onResume()
  • ...

這是保證按照任何特定的順序工作?在每個Android版本中?

Regads

回答

5

按照圖你就會明白,當一個活動去後臺等來前景會發生什麼。

enter image description here

在步驟2中MainActivity從屏幕消失,但留在存儲器,並沒有被破壞。但是在步驟3中,ActivityTwo在屏幕消失後立即被破壞。並且在最後的第4步中MainActivity被銷燬了。

這是bcos,當Activity_A調用Activity_B時,Activity_B放在任務的頂部並接收焦點。 Activity_A保留在任務中,但處於停止狀態(不可見並且未聚焦)。在此之後,當用戶在Activity_B打開時點擊後退按鈕,Activity_B將從任務中刪除並銷燬。並且Activity_A現在位於任務的頂部並獲得焦點。

活動按照打開的順序存儲在任務中(並添加到任務中)。他們沒有在任務內以任何方式排序或排序。任務中的活動集也稱爲回棧。我會把它叫做堆棧。

該圖(從官方網站)演示了一個例子:

enter image description here

+0

出色答卷!請,你可以添加你獲得信息的鏈接嗎? – Cheborra

+0

它在android doc.check中有鏈接:http://developer.android.com/guide/components/tasks-and-back-stack.html –

+0

謝謝@Shankarivatsalkumar很好的解釋! –