Android 四種啓動模式

四種啓動模式:

1)standard(默認)

2)singleTop

3)  singleTask

4)  singleInstance

1. standard啓動模式

    standard啓動模式是一直Android開發過程中默認的啓動方式,在standard啓動模式下,每次啓動一個新的活動,它就會把這個活動加入到返回棧中,並處於棧頂的位置。這種啓動方式,不管返回棧中有沒有存在這個活動,每次都會創建一個這個活動的實例放到返回棧中。如果返回棧已經存在活動A,再次啓動活動A的時候,返回棧的活動爲 A --> A 。如下左圖:


點擊返回之後,返回棧中棧頂的活動移除,如右圖:

<activity
            android:name=".FirstActivity"
            android:launchMode="standard"
            android:screenOrientation="portrait">

2. singleTop啓動模式

    當活動的啓動模式指定爲singleTop,在啓動活動時,如果發現該返回棧的棧頂已經是該活動時,則認爲可以直接使用它,不會再創建新的活動實例,如果該活動已經處在棧頂,則直接複用該活動。並且會調用該實例的onNewIntent()方法將 Intent 對象傳遞到這個實例中。

<activity
            android:name=".Activity"
            android:launchMode="singleTop"
            android:screenOrientation="portrait">

3. singleTask啓動模式

    當活動使用singleTask啓動模式時,返回棧中只有一個該 Activity 實例。如果系統中已經有了一個實例, 持有這個實例的任務將移動到頂部,同時把該活動上方的活動移出返回棧,且 intent 將被通過 onNewIntent()發送。 如果沒有,則會創建一個新的Activity 並置放在返回棧中。如果返回棧中活動如下左圖,當重新啓動BActivity時,CActivity被移出棧頂,返回棧如右圖所示:


<activity
            android:name=".BActivity"
            android:launchMode="singleTask"
            android:screenOrientation="portrait">

4. singleInstance啓動模式

    使用singleInstance啓動模式是活動,啓動 Activity 只會創建一個 Activity 實例,並將它加入新的 Task棧頂,該棧中只有該活動,也就是說被該實例啓動的其他 activity 會自動運行於另一個 Task 中。 當再次啓動該activity 的實例時,會重用已存在的任務和實例。並且會調用這個實例 的 onNewIntent()方法,將 Intent 實例傳遞到該實例中。和 singleTask 相同, 同一時刻在系統中只會存在一個這樣的 Activity 實例。

<activity
            android:name=".Activity"
            android:launchMode="singleInstance"
            android:screenOrientation="portrait">


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章