Android 啓動模式和啓動標誌的關係以及各種適應的使用場合
轉載請註明出處:http://blog.csdn.net/onlybeyond99/article/details/50688344 挨踢人one
一、設置方式
1、通過在配置文件中設置Activity的launchMode熟悉設置啓動模式
2、在StartActivity()之前對Intent設置啓動標誌
二、啓動模式
1、standard:標準模式,這也是系統的默認模式。每次啓動一個Activity都會重新創建一個新的實例。
2、singleTop:棧頂複用模式。在這種模式下,如果新Activity已經在任務棧中存在了並且位於任務棧的棧頂,那麼新Activity不會被重新創建。
運用場景:後臺service不停的加載數據,然後用startactivity更新數據,
3、singleTask:棧內複用模式。
兩種情況:當Activity設置TaskAffinity並且與原來不一樣時會新開一個棧,將其放入棧地
沒有設置時會加入當前的棧,如果之前的棧已經含有啓動的Activity,則activity之上的其他Activity都會被移除
適用場景:註冊包含多個頁面,從比較深的頁面之間回到首頁導航
啓動的Activity變爲棧頂
4、singleInstance:系統會爲他單獨創建一個任務棧將其壓入,如果再次啓動他,他已經存在了,那麼就直接復
用該任務棧。單獨佔用一個任務棧
適用場景:一些特別消耗資源的Activity,比如包含地圖的Activity
三、啓動標誌
1.FLAG_ACTIVITY_SINGLE_TOP
與launchMode="singleTop"具有相同的行爲
2.FLAG_ACTIVITY_NEW_TASK
單獨用通常沒效果,需要與FLAG_ACTIVITY_CLEAR_TASK或FLAG_ACTIVITY_CLEAR_TOP聯合使用。
與FLAG_ACTIVITY_CLEAR_TASK一起使用能夠能夠清除之前的Activity
與FLAG_ACTIVITY_CLEAR_TOP時需要把TaskAffinity設置的和之前不一樣。這時的效果類似於singleTask不同TaskAffinity的效果
四、關係與比較
兩種都能對Acitity的啓動模式進行設置,且有很多模式兩種都能實現。(singleInstance只能第一種實現)
但個人感覺啓動標誌會更靈活一些。因爲很多的 Activity使用的多次,而且需求不一定一樣。這時通過啓動標誌來控制回方便很多
獨學而無友,則孤陋而寡聞!分享知識,交流技術,碰撞思想!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.