Android應用程序生命週期

所謂應用程序的生命週期,是指應用程序進程從創建到消亡的整個過程。在 Android 中,多數情況下每個程序都是在各自獨立的 Linux 進程中運行的。當一個程序或其某些部分被請求時,進程就“出生”;當該程序沒必要繼續運行且系統需要回收此進程所專用的內存時,該進程就“死亡”。因此,Android 程序的生命週期是由系統控制而非程序自身直接控制,這與桌面應用程序有一定的區別,桌面應用程序的進程也是在其他進程或用戶請求時被創建,但經常在程序結束時執行一個特定的動作(如從 main 方法 return )而導致進程結束。

簡而言之,Android 應用程序的生命週期是指在 Android 系統中進程從啓動到終止的所有階段,即 Android 程序啓動到停止的全過程,程序的生命週期是由 Android 系統進行調度和控制的。 但由於手機的內存是存限的.隨着打開的應用程序數量的增多,可能造成應用程序響應時間過長或系統假死的情況,因此在系統內存不足的情況下,Android 系統便會捨車保帥,選擇性地來終止一些重要性較低的程序應用,以便回收內存供更重要的應用程序使用。

Android 根據應用程序的組件及組件當前的運行狀態將所有的進程按重要性程度從高到低劃分爲5 個優先級

  1. 前臺進程
  2. 可見進程
  3. 服務進程
  4. 後臺進程
  5. 空進程

系統優先級

前臺進程

前臺進程是指顯示在屏幕最前端並與用戶正在交互的進程,是 Android 系統中最重要的進程。前臺進程包括以下4種情況:

  1. 進程中的 Activity 正在與用戶進行交互
  2. 進城服務被 Activity 調用,並且該 Activity 正在與用戶進行交互
  3. 進程服務正在執行生命週期中的回調方法,如 onCreat()onStart()onResume() 方法
  4. 進程的 BroadcastReceiver 正在執行 onReceive() 方法

Android 系統在多個前臺進程同時運行時,可能會出現資源不足的情況,此時可清除部分前臺進程,以保證主要的用戶界面能夠及時反應

可見進程

可見進程是指部分程序界面能夠被用戶看見,卻不在前臺與用戶交互,不能響應界面事件的進程。如果一個進程包含服務,且該服務正在被用戶可見的 Activity 調用,則此進程同樣被視爲可見進程。

Android 系統一般存在少量的可見進程,只用在特殊的情況下,Android 系統纔會爲保證前臺進程的資源而清除可見進程

服務進程

服務進程是指由 startService() 方法啓動服務的進程。服務進程有以下特徵:

  1. 沒有用戶界面
  2. 在後臺長期運行

例如,MP3 播放器或後臺上傳下載數據的網絡服務,都是服務進程

除非 Android 系統不能保證前臺進程或可見進程所必要的資源,否則不會強行清除服務進程

後臺進程

後臺進程是指不包含任何已啓動的服務,且沒有任何可勁的 Activity 的進程。後臺進程不直接影響用戶的體驗。 Android 系統中一般存在數量較多的後臺進程,因此這些進程會被曝存在一個列表中,以保證在系統資源緊張是,系統會優先清除用戶較長時間沒有用到的後臺進程

空進程

空進程是指不包含任何活躍組件的進程。通常保留這些空進程,是爲了將其作爲一個緩存,在其所屬的應用組件下一次需要時,以縮短啓動的時間

在系統資源緊張時,Android 系統首先會清除空進程,但爲了提高Android 系統應用程序的啓動速度,Android 系統會將空進程保存在系統內存中,當用戶重新啓動該程序時,空進程會被重新使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章