天天看點

launchMode之的幾種取值

Activity的launchMode

launchMode之standard

  ·标準模式。每次激活Activity時均在目前任務棧中建立新的執行個體。

在配置檔案裡把activity節點的屬性配置為  android:launchMode="standard" (能夠不用配置,由于預設是standard)

标準模式特性:

每次激活Activity,

taskid同樣(即:表示每次激活Activity。是同一個任務棧。每次點選回退會依照後進先出的順序出棧)

hashcode每次都不同(表示每次激活一次Activity都會建立一個新的執行個體)

launchMode之singleTop

    ·singleTop

    ·位于棧頂時唯一,假設目前Activity已位于目前任務棧的棧頂,則再次激活該Activity也不會建立新的執行個體

launchMode之singleTask

·singleTask

(1)獨立于任務棧,假設該singleTaskActivity的執行個體不存在,則激活時會建立并獲得棧頂位置。

(2)假設singleTaskActivity的執行個體已經存在,激活時不會建立新的singTaskActivity執行個體,且原來已經存在的singTaskActivity上方的Activity均出棧,原來的這個singTaskActivity獲得棧頂位置。

一句話就是:singTaskActivity要麼不存在要麼僅僅有一個執行個體,激活時。肯定在棧頂位置,前面若有Activity時會被“擠”出站(被銷毀)

launchMode之singleInstance(單例的)

·singleInstance

·執行個體唯一,不管哪個Task,共享同一個Activity的執行個體。

·該Activity有獨立的Task(獨占一個Task),且在Task中唯一,由該Activity激活的其他Activity歸屬于其他Task

singleInstance與taskAffinity

由被配置為singleInstance的Activity激活的其他Activity。會嘗試放在

存在“親屬”關系的Task中。假設沒有比對的Task存在。則會建立新的Task存放被激活的Activity。

轉載于:https://www.cnblogs.com/jzssuanfa/p/7253995.html