讀官方文檔 activities/Processes and Application Lifecycle總結(jié)
Android中應(yīng)用的進(jìn)程的生命周期不由應(yīng)用直接控制柑司,而是由組成部分的的重要性來綜合決定归形。為決定哪些進(jìn)程應(yīng)該在低內(nèi)存時被kill峭沦,Android根據(jù)運行在進(jìn)程中的組件和組件的狀態(tài)綜合剖膳,列出了以下重要層級:
- foreground process - 用戶正在做什么所需要的進(jìn)程碘举,當(dāng)進(jìn)程包含以下情形:
- 運行著正在與用戶交互的activity茎匠,已經(jīng)執(zhí)行了 onResume()
- BroadcastReceiver 的 onReceive() 方法正在執(zhí)行
- 有 Service 正在執(zhí)行它的回調(diào)方法onCreate()格仲,onStart(),onDestroy()
- visible process - 用戶當(dāng)前知道的工作所在的進(jìn)程诵冒,被kill可能會影響用戶體驗凯肋。以下情形:
- 正在運行著對用戶可見但是不在前臺的activity(即onResume()被調(diào)用)
- 運行著foregroud service,service.startForeground()
- 托管著系統(tǒng)正在運行的用戶知道功能的特定服務(wù)汽馋,比如動態(tài)壁紙侮东、輸入法等
service process - 持有著通過startService()啟動的service,盡管這些進(jìn)程不對用戶直接可見豹芯,但通常執(zhí)行著用戶關(guān)心的操作悄雅,例如后臺上傳或下載。Service運行了很長時間(30mins+)后重要性會被降級铁蹈,其托管進(jìn)程會降級到cache process宽闲。有助于避免泄露緩存或其他消耗太多RAM的 service 的長時間運行。
cache process - 系統(tǒng)會隨時kill這些進(jìn)程來釋放內(nèi)存。activities執(zhí)行了onStop()并返回容诬。