iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 28
2
Software Development

[Andriod] Andriod Studio 從入門到進入狀況系列 第 28

[Day 27] Android程式設計番外篇 - 活動的生命週期(二)

今天要繼續講活動的生命週期,

程式共有七個生命週期狀態,其中又可以歸納為三類

  • 資源分配 (Create / Destroy)
    完整的Activity生命週期由Create狀態開始,由Destroy狀態結束。建立Create時分配資源,銷毀Destroy時釋放資源
  • 可見與不可見 (Start / ReStart / Stop)
    當Activity運行到Start狀態時,就可以在螢幕上看到這個Activity,相反地,當Activity運行到Stop狀態時,這個Activity就會從螢幕上消失
    當Activity尚未被銷毀Destroy,而又再次被呼叫時,就會先進入ReStart狀態後,在進入正常的Start狀態。例如我們從當前的Activity返回前一個Activity時,將會比直接開啟新Activity多進入一個Restart狀態。
  • 是否有螢幕控制權 (Resume / Pause)
    當使用者預備離開目前頁面時,原來的Activity會進入Pause狀態,暫時放棄直接存取螢幕的能力,被中斷到背景去,將前景交給優先級高的事件。當這些優先級高的事件處理完後,Activity又改進入Resume狀態,取回了螢幕控制權。

Android官方網站提供Activity的運作流程如圖:
https://ithelp.ithome.com.tw/upload/images/20181102/201056940ZpeIpDIs5.png

由實際運行的記錄來看,我們可以歸納出所有Android應用程式都遵循的動作流程。

  • 一般啟動
    onCreate → onStart → onResume
    啟動一個Activity的基本流程是:分配資源給這個Activity(Create狀態),然後將Activity內容顯示在螢幕上(Start狀態)。在一切就緒後,取得螢幕的控制權(Resume狀態),使用者可以開始使用這個程式
    https://ithelp.ithome.com.tw/upload/images/20181102/20105694kXnV5p6ZWv.png

  • 呼叫另一個Activity
    onPause (1) → onCreate (2) → onStart (2) → onResume (2) → onStop (1)
    這是個先凍結原本的Activity,再交出螢幕控制權(Pause狀態)的過程。直到Activity 2完成一般啟動流程後,Activity 1 才會被停止
    https://ithelp.ithome.com.tw/upload/images/20181102/201056948qeKEduCHy.png

  • 返回原Activity
    onPause (2) → onRestart (1) → onStart (1) → onResume (1) → onStop (2) → onDestroy (2)
    在新的Activity中,點選硬體的Back 按鈕,可以讓我們回到原本的Acitvity
    https://ithelp.ithome.com.tw/upload/images/20181102/20105694eijjZvaB9K.png

  • 退出結束
    onPause → onStop → onDestroy
    如果程式有直接呼叫finish函式來關閉Activity的話,系統假設我們很確定我們在做什麼,因此會直接先交出螢幕控制權(暫停Pause),接著停止這個Activity(Stop),然後銷毀(Destroy)這個Activity
    https://ithelp.ithome.com.tw/upload/images/20181102/20105694WHrWLiFKCL.png

  • 回收後再啟動
    onCreate → onStart → onResume
    被回收掉的Activity一旦又重新被呼叫時,會像一般啟動一樣再次呼叫Activity的onCreate函式
    https://ithelp.ithome.com.tw/upload/images/20181102/20105694OH90B85grF.png


上一篇
[Day 26] Android程式設計番外篇 - 活動的生命週期(一)
下一篇
[Day 28] 我的第一個Android程式 - BMI程式設計(十七) 從其他頁面帶資料回來
系列文
[Andriod] Andriod Studio 從入門到進入狀況33

尚未有邦友留言

立即登入留言