標籤:android 生命週期
Android-進程生命週期
一 進程等級
按照優先順序排列如下:
1 活動進程:Active Process
存在時期
正處於Activity Resume()[Activity重啟]狀態
正處於與bound服務互動的狀態
正處於服務在前台啟動並執行狀態(setForeground()被調用, 該函數將建立指定視窗的線程設定到前台,並且啟用該視窗)
Service生命週期函數正在被執行(onCreate(), onStrat(), onDestory())
Broadcast Receiver正在執行onReceiver()方法
殺死Foreground Process需要使用者相應,因為這個安全優先順序最高
安全優先順序最高,不會輕易被殺死
2 可見進程:Visble Process
當前進程不是焦點進程,Activity不在最上層顯示
但也沒有完全隱藏,能夠看得見,比如彈出一個對話方塊
3 服務進程:Started Service Process
正在啟動並執行,不在上述兩種狀態的Service
4 後台進程:Backgroud Process
不可見狀態的Activity進程,又沒有任何相關Service運行(onStop()被調用),系統有個後台
進程列表,一般情況採取後進先出(隊列)的原則釋放後台進程資源
5 空進程:Empty Process
沒有運行任何Components的進程,保留這個進程主要是為了緩衝的需要,例如下次啟動這個進程可以更加快速
二 Android app的啟動和消亡過程
啟動
由PackageManage(依賴PackageManageService,還與manifest檔案有關係)開始->start主Activity->主Activity不存在->向zygote系統守護進程
執行個體化一個虛擬機器進程->裝載dex檔案
退出
自動釋放
核心->dirvers(驅動)->misc->LowMemoryKiller.c檔案(實現機制)軟碟機動
程式碼退出的3種方法
finish();
System.exit(0);暴力退出
Process.killProcess(Process.myPid());暴力退出
Android-進程生命週期