Android的5個進程等級(Process Levels)
1) Foreground Process
正處於Activity Resume() 狀態
正處於與bound服務交互的狀態
正處於服務在前台運行的狀態 , (startForeground() 被調用)
Service生命周期函數正在被執行 ( onCreate() , onStart() , onDestroy())
BroadcastReceiver 正在執行onReceive()方法
殺死Foreground Process 需要用戶響應-因為這個安全優先級是最高的
2) Visible Process
Activity 不在前端顯示 , 但也沒有完全隱藏,能夠看得見,比如彈出一個對話框 。(Input Method)
一個bound到visible 或者 foreground 的activity的 Service
3) Service Process
正在運行的,不在上述兩種狀態的Service
4) Background Process
不可見狀態的Activity進程,(onStop()被調用)
5) Empty Process
沒有運行任何Components的進程,保留這個進程主要是為了緩存的需要
具體的應用:
1.不希望系統關掉sevice中斷服務方法 :
如音樂sevice 啟動sevice時調用startForeground()前台啟動,不會被系統關掉,音樂會繼續播放,除非通過人機交互手動確認關掉.
2.空進程是為了做緩存,內存裡記錄一些值,下次打開快。
3.如果又有Service又有Visible Activity怎麼辦?
if a process hosts a service and a visible activity, the process is ranked as a visible process, not a service process.
當進程既有Service 並且 有Visible Activity的時候,進程會被認為是Visible 進程 。
得出結論:優先級高的為准。