android的5個程序等級
background process 和 empty process 的區別:
如果乙個activity 沒有啟動service 等, 按home 鍵退回桌面 會進入background process ,
如果是按的back 鍵,則會進入empty process
正處於activity resume狀態
正處於bound服務互動的狀態
正處於服務在前台執行的狀態(startforeground()被呼叫)
service生命週期正在被執行(oncreate(),onstart(),ondestroy())
broadcastreceiver正在執行onreceive()方法
殺死foreground需要使用者響應,因為這個安全優先順序是最高的
是使用者操作所必須的,任一時間下,僅有少數程序會處於前台,僅當記憶體實在無法供給它們維持同時執行時才會被殺死。一般來說,在這種情況下,裝置依然處於使用虛擬記憶體的狀態,必須要殺死一些前台程序以使用者介面保持響應。
•android會依據程序中當前活躍元件的重要程度來盡可能高的估量乙個程序的級別。比如說,如果乙個程序中同時有乙個服務和乙個可視的activity,則程序會被判定為可視程序,而不是服務程序。
2、visible process
activity不在前端顯示,但也沒有完全隱藏,能夠看得見,比如彈出乙個對話方塊
乙個bound到visible或者foreground的activity的service
沒有前台元件,但仍可被使用者在螢幕上所見。當滿足如下任一條件時,程序被認為是可視的:
• 它包含著乙個不在前台,但仍然為使用者可見的activity(它的onpause()方法被呼叫)。這種情況可能出現在以下情況:比如說,前台activity是乙個對話方塊,而之前的 activity位於其下並可以看到。
• 它包含了乙個繫結至乙個可視的activity的服務。
可視程序依然被視為是很重要的,非到不殺死它們便無法維持前台程序執行時,才會被殺死。
3、service process
正在執行的,不在上述兩種狀態的service
4、background process
不可見狀態的activity程序,onstop被呼叫
包含目前不為使用者所見的activity(activity物件的 onstop() 方法已被呼叫)。這些程序與使用者體驗沒有直接的聯絡,可以在任意時間被殺死以**記憶體供前台程序、可視程序以及服務程序使用。一般來說,會有很多背景程序 執行,所以它們一般存放於乙個lru(最後使用)列表中以確保最後被使用者使用的activity最後被殺死。如果乙個activity正確的實現了生命周 期方法,並捕獲了正確的狀態,則殺死它的程序對使用者體驗不會有任何不良影響。
5、empty process
沒有執行任何component的程序,保留這個程序主要是為了快取的需要
不包含任何活動應用程式元件。這種程序存在的唯一原因是做為快取以改善元件再次於其中執行時的啟動時間。系統經常會殺死這種程序以保持程序快取和系統核心快取之間的平衡。
此外,乙個程序的級別可能會由於其它程序依賴於它而公升高。乙個為其它程序提供 服務的程序級別永遠高於使用它服務的程序。比如說,如果a程序中的內容提供者為程序b中的客戶端提供服務,或程序a中的服務為程序b中的元件所繫結,則a 程序最低也會被視為與程序b擁有同樣的重要性。
安卓的乙個程序等級
1 active process 正處於activity resume 狀態 正處於與bound服務互動的狀態 正處於服務在前台執行的狀態 startforeground 被呼叫 service生命週期函式正在被執行 broadcastreceiver 正在執行onreceive 方法oncreat...
CMMI的5個等級和22個過程域
cmmi將能力成熟度分為5個級別 初始級,已管理級,已定義級,量化管理級,優化級。這5個成熟度等級為評價軟體過程能力提供了乙個有序的級別,如圖5 10所示。同時也為軟體過程改進工作指明了方向,讓人們分清輕重緩急,指導人們一步一步地改進過程能力而不是企圖跳躍式地前進。1.初始化 2.已管理級 3.已定...
Hadoop的5個守護程序
一般如果正常啟動hadoop,我們可以在master上通過jps命令看到以下5個daemons root master jps 31144 jps 19803secondarynamenode 19994tasktracker 19571namenode 19672datanode 19887job...