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使用的多次,而且需求不一定一樣。這時通過啓動標誌來控制回方便很多
獨學而無友,則孤陋而寡聞!分享知識,交流技術,碰撞思想!
發佈了39 篇原創文章 · 獲贊 4 · 訪問量 9059
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章