Activity使用啟動(dòng)模式主要是為了讓開(kāi)發(fā)者避免創(chuàng)建多個(gè)重復(fù)的Activity實(shí)例,可以根據(jù)自己的需要來(lái)選擇自己適合的啟動(dòng)模式。
設(shè)置Activity啟動(dòng)模式只需要在AndroidManifest.xml文件下對(duì)應(yīng)的<activity>標(biāo)簽下配置,如下:
Activity的主要有四種啟動(dòng)模式:
1、standard:默認(rèn)啟動(dòng)模式,不用做任何配置。在這種模式下,每次都會(huì)默認(rèn)去創(chuàng)建一個(gè)模式,所以在這種模式下會(huì)產(chǎn)生多個(gè)重復(fù)的實(shí)例。
例如:A——>B——>C,%20C不停的轉(zhuǎn)到C界面,實(shí)例也不停的創(chuàng)建,如下圖:
按back一次返回(銷(xiāo)毀),如下圖:
使用這種模式會(huì)影響用戶體驗(yàn),不過(guò)也需要看情況而使用。
2、singleTop:獨(dú)享任務(wù)棧頂 ,在創(chuàng)建一個(gè)新的Activity之前會(huì)先去查找任務(wù)棧,有沒(méi)有個(gè)這個(gè)Activity實(shí)例,如果有就重用,沒(méi)有就重新創(chuàng)建。在這種模式下,不允許有重復(fù)的實(shí)例。
例如:A—B—C三個(gè)實(shí)例,把C實(shí)例設(shè)置為singleTop模式,然后C 不停的跳轉(zhuǎn)到C界面,代碼如下:
(1)設(shè)置C為singleTop模式

(2)C界面跳轉(zhuǎn)到C界面
(3)運(yùn)行結(jié)果:

C界面只會(huì)創(chuàng)建一次,在singleTop模式下不允許有多個(gè)實(shí)例。
3、singleTask:獨(dú)享任務(wù)棧,和singleTop模式有點(diǎn)類(lèi)似,都會(huì)先去查找任務(wù)棧里面有沒(méi)有要被創(chuàng)建的Activity實(shí)例,如果有就重用并且把其他的Activity實(shí)例銷(xiāo)毀,只留自己一個(gè)。
例如:有三個(gè)實(shí)例A、B、C,我把A設(shè)置為singleTask模式
跳轉(zhuǎn)過(guò)程是這樣子的:A——B——C——A運(yùn)行結(jié)果如下:
注意看到?jīng)],A(也就是第一個(gè)界面)只創(chuàng)建了一次,之后跳轉(zhuǎn)A的時(shí)候并把B(第二個(gè)界面)、C(第三個(gè)界面)給銷(xiāo)毀了。這個(gè)也就是singleTask模式,不允許重復(fù)實(shí)例,并且只能它自己獨(dú)享一個(gè)棧。
4、singleInstance:?jiǎn)卫挥幸粋€(gè)實(shí)例,不允許和其他Activity實(shí)例存在,只允許單獨(dú)存在一個(gè)棧。
例如:有三個(gè)Activity實(shí)例A、B、C,它們?nèi)齻€(gè)之間可以互動(dòng),B為singleInstance模式,A啟動(dòng)B,B會(huì)另外新開(kāi)一個(gè)Task,不會(huì)和A共用一個(gè)task,B再啟動(dòng)C,C會(huì)壓在A紙上,不會(huì)和B共用一個(gè)task。這個(gè)的話得自己去實(shí)踐了。不知道如果去描述。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注