Android學習_活動的啓動模式

啓動模式一共有四種,分別是standard(標準模式),singleTop(單頂模式),singleTask(單任務模式),singleInstance(單例模式)。我們通過在AndroidManifest.xml中設置。

 <activity
            android:name=".FirstActivity"
            android:launchMode="singleTop"
            android:label="This is FirstActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

standard

standard是活動默認的啓動模式,在不進行顯式指定的情況下,所有活動都會自動使用這種模式。
Android使用返回棧來管理活動,在standard模式下,每當啓動一個新活動,它就會返回棧中入棧,並處於棧頂的位置。對於使用standard模式的活動,系統不會在乎這個活動是否已經在返回棧中存在,每次啓動都會創建該活動的一個新的實例。

singleTop

當活動的啓動模式指定爲singleTop,在啓動活動時如果發現返回棧的棧頂已經是該活動,則認爲可以直接使用它,不會再創建新的活動實例。但是當活動不在棧頂,還是會重新創建新的實例。

singleTask

當活動的啓動模式指定爲singleTask,每次啓動該活動時系統首先會在返回棧中檢查是否存在該活動的實例,如果發現已經存在則直接使用該實例,並把在這個活動之上的所有活動統統出棧,如果沒有發現就會創建一個新的活動實例。
這裏寫圖片描述

singleInstance

當活動的啓動模式指定爲singleInstance,會啓用一個新的返回棧來管理這個活動。這樣做的意義是實現不同程序共享一個活動實例,這就需要一個共用的返回棧。
我們建立三個活動,分別是FirstActivity,SecondActivity,TirdActivity三個,使用F活動啓動S活動,S活動啓動T活動。設置SecondActivity啓動模式爲singleInstance。依次點擊:

12-12 16:45:43.543 19721-19721/com.example.tengyu.activitytest D/FirstActivity: Task id is12
12-12 16:45:47.718 19721-19721/com.example.tengyu.activitytest D/SecondActivity: Task id is13
12-12 16:45:51.203 19721-19721/com.example.tengyu.activitytest D/ThirdActivity: Task id is12

我們發現F和T使用一個返回棧,而S單獨使用一個返回棧。
singleInstance模式示例圖

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