溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android中Activity有哪些常用的屬性

發(fā)布時(shí)間:2021-07-12 14:04:36 來(lái)源:億速云 閱讀:132 作者:Leah 欄目:移動(dòng)開(kāi)發(fā)

這篇文章將為大家詳細(xì)講解有關(guān)Android中Activity有哪些常用的屬性,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

個(gè)人理解

1>Activity launchMode設(shè)置不為standard,在跳轉(zhuǎn)Activity時(shí),如果新的Activity不再創(chuàng)建新的實(shí)例(不執(zhí)行onCreate) 會(huì)調(diào)用onNewIntent方法。 (正常生命周期情況不會(huì)調(diào)用onNewIntent())

2>Activity launchMode singleInstance實(shí)用場(chǎng)景—>關(guān)于瀏覽器的LaunchMode為singleTask,所以如果當(dāng)你點(diǎn)擊一個(gè)連接下載文件時(shí)(由一個(gè)activity來(lái)處理下載,launchmode為standard),如果再次進(jìn)入瀏覽器,那么下載頁(yè)面就被Destory了,那么這里我們可以把下載頁(yè)面LaunchMode設(shè)置為singleInstance可以解決這個(gè)問(wèn)題.(即:在使用singleTask的情況下 不想關(guān)閉的界面可單獨(dú)新起一個(gè)task)

3>taskAffinty對(duì)lanuchMode的影響 :

當(dāng)LanuchMode設(shè)置為 standard 和singTop,即使 taskAffinty不同,也不會(huì)新起Task.

當(dāng)LanuchMode設(shè)置為 singleTask ,以A啟動(dòng)B來(lái)說(shuō)

1、當(dāng)A和B的taskAffinity相同時(shí):第一次創(chuàng)建B的實(shí)例時(shí),并不會(huì)啟動(dòng)新的task,而是直接將B添加到A所在的task;當(dāng)B的實(shí)例已經(jīng)存在時(shí),將B所在task中位于B之上的全部Activity都刪除,B就成為棧頂元素,實(shí)現(xiàn)跳轉(zhuǎn)到B的功能。 2、當(dāng)A和B的taskAffinity不同時(shí):第一次創(chuàng)建B的實(shí)例時(shí),會(huì)啟動(dòng)新的task,然后將B添加到新建的task中;當(dāng)B的實(shí)例引進(jìn)存在,將B所在task中位于B之上的全部Activity都刪除,B就成為棧頂元素(也是root Activity),實(shí)現(xiàn)跳轉(zhuǎn)到B的功能。

當(dāng)LanuchMode設(shè)置為singleInstance

當(dāng)?shù)谝淮蝿?chuàng)建該Activity實(shí)例時(shí),會(huì)新建一個(gè)task,并將該Activity添加到該task中。注意:該task只能容納該Activity實(shí)例,不會(huì)再添加其他的Activity實(shí)例!如果該Activity實(shí)例已經(jīng)存在于某個(gè)task,則直接跳轉(zhuǎn)到該task。

4>allowTaskReparenting 這個(gè)屬性用來(lái)標(biāo)記一個(gè)Activity實(shí)例在當(dāng)前應(yīng)用退居后臺(tái)后,是否能從啟動(dòng)它的那個(gè)task移動(dòng)到有共同affinity的task,“true”表示可以移動(dòng),“false”表示它必須呆在當(dāng)前應(yīng)用的task中,默認(rèn)值為false。

5>clearTaskOnLaunch

程序回到home界面后,再次點(diǎn)擊程序圖標(biāo)的效果。影響的是activity的生命周期。

簡(jiǎn)單的:

activity A(clearTaskOnLaunch設(shè)置為true)(為主界面)

activity B

程序啟動(dòng)A,在啟動(dòng)B。再點(diǎn)擊HOME鍵回到桌面,再點(diǎn)擊程序圖標(biāo),效果是B執(zhí)行onrestart,B執(zhí)行ondestory。A界面顯示。(如果clearTaskOnLaunch沒(méi)設(shè)置,則是顯示B界面)

稍微復(fù)雜點(diǎn)的:

activity A(clearTaskOnLaunch設(shè)置為true),B(clearTaskOnLaunch設(shè)置為true),C

依次啟動(dòng)A,B,C,點(diǎn)擊HOME,再在桌面點(diǎn)擊圖標(biāo)。啟動(dòng)的是A(執(zhí)行onrestart),B、C執(zhí)行(ondestory)。

也就是說(shuō),優(yōu)先啟動(dòng)第一個(gè)(A)已注冊(cè)clearTaskOnLaunch為true的Activity,其余的后啟動(dòng)的activity(B、C)都銷毀,除非前面A已經(jīng)finish銷毀,后面的已注冊(cè)clearTaskOnLaunch為true的activity才會(huì)生效。

關(guān)于Android中Activity有哪些常用的屬性就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI