再說Activity的四種啓動模式

Android啓動模式分爲四種,分別爲:standard、singleTop、singleTask、singleInstance.net

  1. stander 標準啓動模式:blog

    這是Activity默認的啓動模式,也是邏輯最簡單的一種,只要Activity使用這種模式進行啓動,系統會無論三七二十一,直接create一個Activity實例出來,而後加入到Task頂。
進程

    2. singleTop:
it

    這中啓動模式和standard的最大區別,就是它在啓動時會檢查Task頂部是否已經存在該Activity實例,if 存在 則重用已經存在的實例,else 從新建立一個activity實例並加入task頂部。
程序

     3.singleTaskactivity

      這種啓動模式相對於上面兩個,就比較複雜。若是activity以這種模式啓動,會執行下面的流程:
vi

        a)系統會先爲這個Activity加上Flag_new_task 的標籤
標籤

        b)獲取該activity的 taskAffinity屬性(該屬性默認爲應用程序的包名)
生成

        c)檢查系統中是否已經存在taskAffinity屬性值所對應的Task:
new

                !)若是存在該Task:則先檢查該Task中是否有目標Activity的實例,if存在,則清空該實例以上全部的Activity實例,將該Activity實例放在Task頂部。若是不存在,則從新建立一個該Activity的實例,而且加入到該Task中。

                  !!)若是不存在該Task,則建立一個新的Task,而且建立目標Activity並將其加入到Task頂端。

      4.singleInstance

        這種模式啓動Activity,會放置在一個單獨的Task中,並且這個task中只有着一個activity,系統會保證其全系統惟一性。若是在這類Activity啓動新的Activity則所啓動的Activity有可能會生成新的Task中或加入到別的已有的task中,這個根據taskAffinity來肯定。

Task的一些特色:Task不單單能夠跨應用,也能夠跨進程進行。

本文參考:http://blog.csdn.net/zhangjg_blog/article/details/10923643

相關文章
相關標籤/搜索