Activity的Launch Mode

Activity有四種啓動模式:
1.Standard(默認模式)
2.Topsingle
3.SingleTask
4.Singlestance
在AndroidManifest.xml中的標籤中的android:launchMode屬性設置或者通過Intent的flag設置

任務棧
啓動模式是基於任務棧中的,任務棧是一種用來放置Activity實例的容器,他以棧的形式進行盛放。當啓動一個Application的時候,系統會默認創建一個對應的Task,用來放置根Activity。
任務棧可以理解爲實現一個功能而負責管理所有用到的Activity實例的棧。

standard:
默認模式,可以有多個相同的實例,允許多個相同的Activity疊加。
這裏寫圖片描述

Topsingle:
棧頂複用模式,如果開啓的activity在任務棧的頂部已經存在,就不會創建新的實例,直接調用onNewIntent()方法。
應用場景:通知欄點擊收到通知啓動的activity;
這裏寫圖片描述
singleTask:
棧內複用模式,activity只會在任務棧中存在一個實例。
應用場景:App主頁
這裏寫圖片描述
singlestance:
單一實例模式,整個手機系統中只有一個存在。
應用場景:調電界面
這裏寫圖片描述

Intent的Flag設置:
FLAG_ACTIVITY_NEW_TASK
使用一個新的Task來啓動Activity,但啓動的每一個Activity都在一個新的Task中。(通常使用從Service啓動Activity場景)

FLAG_ACTIVITY_SINGLE_TOP
使用singleTop啓動Activity

FLAG_ACTIVITY_CLEAR_TOP
使用singleTask模式啓動Activity

FLAG_ACTIVITY_NO_HISTORY
當該Activity啓動其他Activity後,該Activity就消失了。

參考:
http://www.jianshu.com/p/2a9fcf3c11e4
https://hit-alibaba.github.io/interview/Android/basic/Android-LaunchMode.html

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