android中的進程優先級

在android中:當系統內存不足時,Android系統將根據進程的優先級選擇殺死一些不過重要的進程,優先級低的先殺死。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處於後臺殺死時,若是用戶從新啓動,就會恢復以前的裕興狀態。內存


五、空進程

  • 任何沒有活動的進程

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

相關文章
相關標籤/搜索