Activity 啓動模式淺談

Android 分爲四種啓動模式, 需要提前瞭解 Activity 棧信息。

standard

Activity 默認的啓動模式, 即在 Manifest 清單文件中, 指定 <activity> 標籤時, 不顯示聲明 android:launchMode 屬性, 或者顯示聲明爲 android:launchMode=“standard”

啓動的 Activity 默認在被創建的 Activity 堆棧上, 每次都會重新創建。
A, B, C 三個Activity, A 啓動 B, B 啓動 C, C 啓動 A, A 啓動 A 的順序
當前的Activity 棧,存在, A,B,C,A,A 五個Activity

singleTop

啓動的 Activity 如果在 Activity 的棧頂, 則進行復用Activity, 不重新創建。 被複用的Activity將回調 onNewIntent() 函數, 不執行onCreate()。 如果不在棧頂, 則跟 standard 的模式相同。

singleTask

  • 如果當前 Activity 棧中已經存在了緩存對象, 則直接進行復用不重新創建, 並且在棧中上面的activity實例, 會被執行出棧, 被複用的 Activity 回調 onNewIntent() 函數。

例如, 當前棧信息對象爲, a, b, c, d 四個activity, 這時我調用 startActivity(new Intent(this, b.class)), 喚起 Activity b, 這時會調用 b 的onNewIntent() 函數, 棧對象信息爲, a,b , activity c,d被移除。

  • 可以創建一個新的任務棧運行

<activity> 標籤中, 存在 android:launchMode="singleTask", 並且設置屬性 android:taskAffinity="xxx.xxx"就可以在一個新的任務中運行, 可以在多任務列表中查看這個任務, 並且可以跟其他app之間共享使用相同的taskAffinity。

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