《Android》『Activity Life Cycle』- Activity 的生命週期

《簡單介紹》

這篇來解釋一下甚麼是屬於 Android 的生命週期,在Android領域中,通常一般人所提到的生命週期,指的是一個 Activity 的生命週期,也就是它從一開始誕生到最後結束的過程中,所經歷的狀態變換,而甚麼是 Activity 呢?簡單的說,Activity 就是一個應用程式(Application)中,程序執行時的”行為”,一個Application可以由多個 Activity 的交互作用所構成,也因此,可用記憶體資源的控管與分配方式就會顯得非常重要,而所謂 Activity 的生命週期,其實就是 Android  系統用來管理資源分配的一種機制,當記憶體的資源不足時,系統會自動依照優先等級進行回收,因此,透過了解 Activity 的生命週期,我們可以更明確的利用已知的狀態改變機制,在特定的情況下去控管一些所需的變數,進而達到我們要的目的。

activity_lifecycle

Activity 的生命週期

關於 Activity 的生命週期,相關的圖案在網路上搜尋關鍵字就會有許多不同人畫的流程圖,這是其中一張,Android 的程式通常是由很多個Activity互相合作而成,Android 系統為了能正確地管理不同 Activity 之間的交換機制,分別定義了 onCreate()onStart()onRestart()onResume()onPause()onStop()onDestory()…等不同的狀態,在一個 Activity 執行的過程當中,系統會根據目前使用者的操作行為,自動地去改變週期狀態,因此,只要能熟悉系統會將一個”行為”在何時切換至 Activity 生命週期的哪種狀態,我們就能於該狀態上,針對當前狀況為 Activity 進行所需的程式碼修改。

 

《系統回收資源的優先等級》

第一優先 : 空行程 (Empty Process)

空行程指的是獨立的 Activity,當一個 Activity 在當下沒有與任何其他 Activity 關聯時,即稱為空行程。

第二優先 : 背景行為 (Background Activity)

處於 onStop() 狀態下的 Activity 即稱為 Background Activity。

第三優先 : 伺服器行程 (Service Process)

Service Process 即是於程式背景執行,不帶有 UI 介面的一個類別。

第四優先 : 可視行為 (Visible Activity)

處於 onPause() 狀態下的 Activity 即稱為 Visible Activity。

第五優先 : 當下行為 (In process Activity)

當記憶體嚴重不足,最後會被回收的,就是當下正在執行的 Activity。

 

《常見的生命週期流程》

  1. 啟動 Activity
    StartActivity ➞ onCreate() ➞ onStart() ➞ onResume() 
  2. 結束 Activity
    onPause() ➞ onStop() ➞ onDestroy() ➞ End Activity 
  3. 呼叫內建的 Activity
    onPause() ➞ onStop() 
  4. 由內建的 Activity 返回原本的 Activity
    onRestart() ➞ onStart() ➞ onResume() 
  5. 呼叫自訂的 Activity (1 : 原Activity, 2 : 被呼叫的自訂 Activity)
    onPause(1)
    ➞ onCreate(2) ➞ onStart(2) ➞ onResume(2)
    ➞ onPause(1) ➞ onStop(1) 
  6. 由自訂的 Activity 返回原本的 Activity (1 : 原Activity, 2 : 被呼叫的自訂 Activity)
    onPause(2)
    ➞ onRestart(1) ➞ onStart(1) ➞ onResume(1)
    ➞ onStop(2) ➞ onDestory(2) ➞ End Activity 2 
  7. 按下 Power 鍵 (鎖定螢幕/解除鎖定)
    鎖定螢幕 – onPause() ➞ onStop()解除鎖定 – onRestart() ➞ onStart() ➞ onResume()

  8. 按下 Home 鍵
    onPause() ➞ onStop()

賽肥膩膩

我們是低調到不行的肥膩夫妻檔,一路上一邊吵鬧一邊記錄著生活大小事,最近迷上了宅在家追劇,希望能透過文字將所有看過的影集好好紀錄,整理成屬於我們自己的回憶資料庫。

上 / 下一篇文章

臉書留言

一般留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *