1) Active Process前端
? 正處於Activity Resume() 狀態android
? 正處於與bound服務交互的狀態緩存
? 正處於服務在前臺運行的狀態 , (startForeground() 被調用)安全
? Service生命週期函數正在被執行 (函數
? BroadcastReceiver 正在執行onReceive()方法onCreate() , onStart() , onDestroy())
殺死Foreground Process 須要用戶響應-由於這個安全優先級是最高的spa
2) Visible Processblog
當前進程不是焦點進程,Activity 不在前端顯示 , 但也沒有徹底隱藏,可以看得見,好比彈出一個對話框 。(Input Method)生命週期
一個bound到visible 或者 foreground 的activity的 Service 進程
3) Service Process資源
正在運行的,不在上述兩種狀態的Service
4) Background Process
不可見狀態的Activity進程,又沒有任何相關Service運行的(onStop()被調用),系統有個後臺進程列表,通常狀況採起後進先出的原則來釋放後臺進程資源
5) Empty Process
沒有運行任何Components的進程,保留這個進程主要是爲了緩存的須要
///////////////////////
在Android中每一個界面都是一個Activity,切換界面操做實際上是多個不一樣Activity之間的實例化操做。在Android中Activity的啓動模式決定了Activity的啓動運行方式。
Android總Activity的啓動模式分爲四種:
Activity啓動模式設置:
<activity android:name=".MainActivity" android:launchMode="standard" />
Activity的四種啓動模式:
1. standard
模式啓動模式,每次激活Activity時都會建立Activity,並放入任務棧中。
2. singleTop
若是在任務的棧頂正好存在該Activity的實例, 就重用該實例,否者就會建立新的實例並放入棧頂(即便棧中已經存在該Activity實例,只要不在棧頂,都會建立實例)。
3. singleTask
若是在棧中已經有該Activity的實例,就重用該實例(會調用實例的onNewIntent())。重用時,會讓該實例回到棧頂,所以在它上面的實例將會被移除棧。若是棧中不存在該實例,將會建立新的實例放入棧中。
4. singleInstance
在一個新棧中建立該Activity實例,並讓多個應用共享改棧中的該Activity實例。一旦改模式的Activity的實例存在於某個棧中,任何應用再激活改Activity時都會重用該棧中的實例,其效果至關於多個應用程序共享一個應用,無論誰激活該Activity都會進入同一個應用中。