1. 程式人生 > >Android面試收集錄17 Android進程優先級

Android面試收集錄17 Android進程優先級

恢復 troy 情況 post 可能 clas onpause blob body

在安卓系統中:當系統內存不足時,Android系統將根據進程的優先級選擇殺死一些不太重要的進程,優先級低的先殺死。進程優先級從高到低如下。

前臺進程

  • 處於正在與用戶交互的activity
  • 與前臺activity綁定的service
  • 調用了startForeground()方法的service
  • 正在執行oncreate(),onstart(),ondestroy方法的 service。
  • 進程中包含正在執行onReceive()方法的BroadcastReceiver。

系統中的前臺進程並不會很多,而且一般前臺進程都不會因為內存不足被殺死。特殊情況除外。當內存低到無法保證所有的前臺進程同時運行時,才會選擇殺死某個進程。

可視進程

  • 為處於前臺,但仍然可見的activity(例如:調用了onpause()而還沒調用onstop()的activity)。典型情況是:運行activity時,彈出對話框(dialog等),此時的activity雖然不是前臺activity,但是仍然可見。
  • 可見activity綁定的service。(處於上訴情況下的activity所綁定的service)

可視進程一般也不會被系統殺死,除非為了保證前臺進程的運行不得已而為之。

服務進程

  • 已經啟動的service

後臺進程

  • 不可見的activity(調用onstop()之後的activity)

後臺進程不會影響用戶的體驗,為了保證前臺進程,可視進程,服務進程的運行,系統隨時有可能殺死一個後臺進程。當一個正確實現了生命周期的activity處於後臺被殺死時,如果用戶重新啟動,會恢復之前的運行狀態。

空進程

  • 任何沒有活動的進程

系統會殺死空進程,但這不會造成影響。空進程的存在無非為了一些緩存,以便於下次可以更快的啟動。

參考文章

  https://github.com/LRH1993/android_interview/blob/master/android/basis/process-priority.md

Android面試收集錄17 Android進程優先級