Android下的Activity的四種啓動模式

 

一:Standard的啓動模式

 Standard是默認的模式每開始一個activity,就會在棧中加一個activity,相同的也會加,

所以加多少個,就要按多少次返回鍵才能回到最初的界面

二:singleTop的啓動模式

1.清單配置:

       <activity 

            android:name="com.itcode.taskstack.SecondActivity"

            android:label="@string/_second"

            android:launchMode="singleTop">

</activity>

    Singletop:如果任務棧的棧頂已經存在這個activity的實例,

  不會創建新的activity,而是利用舊的activity實例

 調用 舊的activity的onNewIntent()方法

2.作用:

避免一個糟糕的用戶體驗,如果這個界面已經被打開且在任務棧的棧頂,就不會重複開啓了

 

三:Singletask的啓動模式:

1.Androidfest配置:

        <activity 

            android:name="com.itcode.taskstack.SecondActivity"

            android:label="@string/_second"

            android:launchMode="singleTask">

     </activity>

2.作用:

singletask的啓動模式:在任務棧裏面只允許一個實例存在,假如02singletask,

棧裏是:01 02 01 03 若此時開啓02,則會複用這個已經存在的activity,並且把當前activity上面其他的activity從任務棧裏清空!

3.應用場景:

瀏覽器:底層使用的是webkit c 內核,初始化一次需要申請很多的內存資源,佔用cpu時間

所以使用singletask,保證在任務棧裏只會有一個實例存在

四:singleInstance的啓動模式(相當於實例):

 1.Androidfest的配置:

 <activity 

            android:name="com.itcode.taskstack.SecondActivity"

            android:label="@string/_second"

            android:launchMode="singleInstance">

        </activity>

2.特點:

singleInstance的啓動模式更加極端,

開啓新的activity,會給自己創建一個單獨的任務棧

 3.應用場景:

在整個手機操作系統裏面只會有一個該activity的實例存在,

所以多個應用程序共享這個activity的實例,有線程安全問題!

發佈了39 篇原創文章 · 獲贊 38 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章