標籤:des android blog http 使用 ar for art div
1、foreground 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是由 startService() 方法啟動的服務,它不會變成上述兩類。儘管服務進程不會直接為使用者所見,但它們一般都在做著使用者所關心的事情(比如在背景播放mp3或者從網上下載東 西)。所以系統會盡量維持它們的運行,除非系統記憶體不足以維持前台進程和可視進程的運行需要。4、background process 不可見狀態的activity進程,onstop被調用 包含目前不為使用者所見的activity(Activity對象的 onStop() 方法已被調用)。這些進程與使用者體驗沒有直接的聯絡,可以在任意時間被殺死以回收記憶體供前台進程、可視進程以及服務進程使用。一般來說,會有很多背景進程 運行,所以它們一般存放於一個LRU(最後使用)列表中以確保最後被使用者使用的activity最後被殺死。如果一個activity正確的實現了生命周 期方法,並捕獲了正確的狀態,則殺死它的進程對使用者體驗不會有任何不良影響。5、empty process 沒有運行任何component的進程,保留這個進程主要是為了緩衝的需要 不包含任何活動應用程式組件。這種進程存在的唯一原因是做為緩衝以改善組件再次於其中運行時的啟動時間。系統經常會殺死這種進程以保持進程緩衝和系統核心緩衝之間的平衡。此外,一個進程的層級可能會由於其它進程依賴於它而升高。一個為其它進程提供 服務的進程層級永遠高於使用它服務的進程。比如說,如果A進程中的內容提供者為進程B中的用戶端提供服務,或進程A中的服務為進程B中的組件所綁定,則A 進程最低也會被視為與進程B擁有同樣的重要性。 http://blog.csdn.net/llbupt/article/details/7358360
Android的5個進程等級(轉)