4種啟動(dòng)模式
- standard 標(biāo)準(zhǔn)模式,默認(rèn)模式,正常activity task的進(jìn)出棧。
- singleTop 棧頂復(fù)用,如果剛好是在activity task的棧頂,無(wú)需重新創(chuàng)建,直接調(diào)用onNewIntent()。
以上兩種方式都是用于單個(gè)任務(wù)棧,或者單個(gè)APP應(yīng)用進(jìn)程。
singleTask 棧內(nèi)復(fù)用,全局單例,如果activity task棧已經(jīng)存在,就直接調(diào)用,并清除上面的所有activity,也是調(diào)用onNewIntent(),可以在同個(gè)任務(wù)?;虿煌蝿?wù)棧使用。
singleInstance 單一實(shí)例,重新創(chuàng)建一個(gè)任務(wù)棧,而且這個(gè)任務(wù)棧只能有一個(gè)activity,如果已經(jīng)創(chuàng)建了,也是調(diào)用onNewIntent(),是不同任務(wù)棧的使用。
這兩個(gè)在不同任務(wù)棧使用,activity跳轉(zhuǎn)會(huì)發(fā)生task切換,入場(chǎng)動(dòng)畫會(huì)不一樣。allowTaskReparenting屬性不會(huì)有task切換,但是是Android9,10失效了。
taskAffinity :activity的任務(wù)棧分組,默認(rèn)app包名,設(shè)置不同taskAffinity,會(huì)啟動(dòng)不同任務(wù)棧,會(huì)發(fā)生task切換,最近任務(wù)列表多個(gè)同名task,只能顯示一個(gè),singleInstance 如果有同名的task,taskAffinity 沖突,其他則會(huì)被隱藏。最近任務(wù)列表看到的task未必活著,看不到未必死了。