關(guān)于四種啟動(dòng)模式該博主已經(jīng)說的很詳細(xì)了:細(xì)談Activity四種啟動(dòng)模式
我想補(bǔ)充幾點(diǎn):
- 1.啟動(dòng)模式-singleTask先较,兩個(gè)activity A和B叮叹,B為singleTask
activity打開順序 :A->B->A->B
此時(shí)當(dāng)A第二次打開的時(shí)候,棧從底到最上是ABA,當(dāng)A再打開B的時(shí)候鹏漆,為了保證同個(gè)棧里只有一個(gè)實(shí)例,那么此時(shí)會(huì)把最上面的A彈出,打開B,此時(shí)的棧為:AB恢恼,而且會(huì)調(diào)用B的onNewIntent()方法 - 2.啟動(dòng)模式-singleInstance,兩個(gè)activity A和B胰默,B為singleInstance场斑,從A打開B漓踢,那么此時(shí)就有兩個(gè)棧,一個(gè)棧只有一個(gè)A和簸,一個(gè)棧只有一個(gè)B彭雾,此時(shí)顯示的是B界面,點(diǎn)返回此時(shí)返回到A棧的A界面锁保,注意此時(shí)B棧并沒有被銷毀,再點(diǎn)返回回到了B棧的B界面半沽,再點(diǎn)返回才會(huì)返回到桌面
-
3.Activity的Flags
3.1:FLAG_ACTIVTTY_NEW_TASK 相當(dāng)于singleTask
3.2:FLAG_ACTNITY _SINGLE_TOP相當(dāng)于singleTop
3.3:FLAG_ACTIVITY_CLEAR_TOP會(huì)把該activity之上的全部彈出
一般這兩個(gè)會(huì)配合使用:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);