launchMode
有四種(standard, singleTop, singleTask, singleInstance), 默認(rèn)standard.
standard
Activity 可以多次實(shí)例化垦沉,而每個實(shí)例均可屬于不同的任務(wù)附帽,并且一個任務(wù)可以擁有多個實(shí)例。
singleTop
如果當(dāng)前任務(wù)的頂部已存在 Activity 的一個實(shí)例谆棱,則系統(tǒng)會通過調(diào)用該實(shí)例的 onNewIntent() 方法向其傳送 Intent牢裳,而不是創(chuàng)建 Activity 的新實(shí)例.
Activity 可以多次實(shí)例化祈噪,而每個實(shí)例均可屬于不同的任務(wù)粥鞋,并且一個任務(wù)可以擁有多個實(shí)例.
singleTask
系統(tǒng)創(chuàng)建新任務(wù)并實(shí)例化位于新任務(wù)底部的 Activity. 但是掂为,如果該 Activity 的一個實(shí)例已存在于一個單獨(dú)的任務(wù)中裕膀,則系統(tǒng)會通過調(diào)用現(xiàn)有實(shí)例的 onNewIntent() 方法向其傳送 Intent,而不是創(chuàng)建新實(shí)例.
一次只能存在 Activity 的一個實(shí)例.
singleInstance
與 "singleTask" 相同勇哗,只是系統(tǒng)不會將任何其他 Activity 啟動到包含實(shí)例的任務(wù)中.
該 Activity 始終是其任務(wù)唯一僅有的成員昼扛;由此 Activity 啟動的任何 Activity 均在單獨(dú)的任務(wù)中打開.
standard模式的Activity, 每次啟動都會創(chuàng)建一個新的實(shí)例, 放到啟動他的那個Activity所在的Task中.
singleTop模式的Activity, 僅當(dāng)該Activity已經(jīng)在Task的頂部了, 才會復(fù)用. 復(fù)用時onPause, 然后onNewIntent喚起, 走onResume流程. 否則都要創(chuàng)建新的實(shí)例, 放進(jìn)Task中.
singleTask模式的Activity, 同一個Task中只會存在一個實(shí)例. 如果Task中還沒有, 則新建, 放在Task頂部; 如果Task中已經(jīng)有該Activity實(shí)例, 則復(fù)用.
singleTask模式的Activity的復(fù)用模式:
如果已經(jīng)在Task頂部, 如同singleTop的復(fù)用模式;
如果不在Task頂部, 則銷毀Task中該Activity頂部的所有其他Activity, 通過onNewIntent喚起該Activity, 走onRestart流程.
singleInstance模式的Activity, 會運(yùn)行在一個單獨(dú)的Task中, 且整個系統(tǒng)中只有一個該Activity實(shí)例. 相當(dāng)于單例模式. 復(fù)用模式和singleTask一樣.