天天看點

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使用的多次,而且需求不一定一樣。這時通過啟動标志來控制回友善很多 獨學而無友,則孤陋而寡聞!分享知識,交流技術,碰撞思想!