Activity啟動模式定義Activity實例與當(dāng)前棧之間的聯(lián)系
設(shè)置Activity的啟動模式有兩種方式:
- 清單文件配置
- Intent設(shè)置flag
Activity總共有五種啟動模式:
standard(默認啟動方式)->flag沒有設(shè)置值 可以有多個實例搞糕,不同實例可以存在多個棧里巧鸭,不同的椦鲂海可以有多個實例
singleTop->
FLAG_ACTIVITY_SINGLE_TOP
與standard模式類似瓶埋,但如果在啟動的棧頂已經(jīng)有該Activity的實例,則不創(chuàng)建新的實例浮创,而是調(diào)用已有實例的onNewIntent()
方法singleTask->
FLAG_ACTIVITY_NEW_TASK
是某個棧里唯一的實例忧吟,該棧可以存在其他Activity實例斩披,他的所在棧是溜族,啟動它的Activity所在棧讹俊,如果在該棧再次被啟動,則會清空在他之上的Activity煌抒,并調(diào)用他的onNewIntent()
方法 ;如果在其他棧啟動仍劈,則除了清空他之上的Activity,還會把他之下的Activity帶走一起疊在其他棧的上面寡壮,注意兩個不合并贩疙,可以看出他跟棧是綁定的singleInstance->flag無對應(yīng) 與singleTask很像,但是它所在的棧容不下任何其他Activity實例况既,也就是說这溅,任何Activity要打開它要么,已經(jīng)有一個棧里面唯一只有它棒仍,那么回調(diào)它的
onNewintent()
方法悲靴,如果沒有,新建一個棧莫其,它如果要打開其他Activity对竣,則必須在其他棧!xml無對應(yīng)->
FLAG_ACTIVITY_CLEAR_TOP
singleTask模式會調(diào)用該模式榜配,他的功能是清空當(dāng)前棧中該實例之上的其他Activity
關(guān)聯(lián)關(guān)系(affinity)
表明一個Activity要跟那個Task關(guān)聯(lián)否纬,通常情況下,同一個應(yīng)用的所有Activity屬于同一個棧(除了singleInstance)