【安卓的一個進程等級】

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都會進入同一個應用中。

相關文章
相關標籤/搜索