Activity中的屬性
- taskAffinity
- launchMode
- allowTaskReparenting
- clearTaskOnLaunch
- alwaysRetainTaskState
- finishOnTaskLaunch
<a id="launchMode" name="launchMode">launchMode</a>
- standard (默認(rèn)啟動(dòng)方式)
可以被實(shí)例化多次店乐,一個(gè)任務(wù)可以有多個(gè)此Activity實(shí)例 - singleTop
如果當(dāng)前任務(wù)頂部已存在實(shí)例买鸽,通過(guò)Intent啟動(dòng)Activity不會(huì)創(chuàng)建新的實(shí)例」常可以被實(shí)例化多次疤孕,每個(gè)實(shí)例可以位于不同的任務(wù)擅编,一個(gè)任務(wù)中可以有多個(gè)此實(shí)例寝并。 - singleTask
創(chuàng)建新任務(wù)并實(shí)例化Activity,如果Activity在已有的任務(wù)中存在實(shí)例,則系統(tǒng)會(huì)通過(guò)調(diào)用現(xiàn)有實(shí)例的 onNewIntent()
方法向其傳送 Intent(對(duì)同一任務(wù)中位于此實(shí)例前面的Activity執(zhí)行出棧)寂曹,而不是創(chuàng)建新實(shí)例哎迄。一次只能存在 Activity 的一個(gè)實(shí)例。(一般應(yīng)用Activity不建議使用此模式隆圆,MainActivity除外)
注:未指定taskAffinity情況下實(shí)例化 singleTask的Activity并不一定創(chuàng)建新的任務(wù)漱挚,新實(shí)例化的Activity可能會(huì)進(jìn)入已有的任務(wù)中,除非指定與包名不同的taskAffinity(個(gè)人理解) - singleInstance
與 "singleTask" 相同渺氧,只是系統(tǒng)不會(huì)將任何其他 Activity 啟動(dòng)到包含實(shí)例的任務(wù)中旨涝。該 Activity 始終是其任務(wù)唯一僅有的成員;由此 Activity 啟動(dòng)的任何 Activity 均在單獨(dú)的任務(wù)中打開(一般應(yīng)用Activity不建議使用此模式)
<a id="taskAffinity"> </a>
<a id="taskAffinity">taskAffinity</a>
taskAffinity指示 Activity 優(yōu)先屬于哪個(gè)任務(wù)。默認(rèn)情況下弧腥,同一應(yīng)用中的所有 Activity 彼此關(guān)聯(lián)厦取。 因此,默認(rèn)情況下管搪,同一應(yīng)用中的所有 Activity 優(yōu)先位于相同任務(wù)中虾攻。 不過(guò),您可以修改 Activity 的默認(rèn)關(guān)聯(lián)更鲁。 在不同應(yīng)用中定義的 Activity 可以共享關(guān)聯(lián)台谢,或者可為在同一應(yīng)用中定義的 Activity 分配不同的任務(wù)關(guān)聯(lián)。
taskAffinity在一下兩種情況有效:
- 啟動(dòng) Activity 的 Intent 包含 FLAG_ACTIVITY_NEW_TASK
標(biāo)志 - Activity 將其 allowTaskReparenting
屬性設(shè)置為 "true"
<a id="allowTaskReparenting" name="allowTaskReparenting">allowTaskReparenting </a>
如果在任務(wù)的根 Activity 中將此屬性設(shè)置為 "true"岁经,則不會(huì)發(fā)生剛才所述的默認(rèn)行為。即使在很長(zhǎng)一段時(shí)間后蛇券,任務(wù)仍將所有 Activity 保留在其堆棧中
<a id="clearTaskOnLaunch" name="clearTaskOnLaunch">clearTaskOnLaunch </a>
它與 alwaysRetainTaskState 正好相反缀壤。 即使只離開任務(wù)片刻時(shí)間,用戶也始終會(huì)返回到任務(wù)的初始狀態(tài)
<a id="alwaysRetainTaskState" name="alwaysRetainTaskState">alwaysRetainTaskState </a>
此屬性類似于 clearTaskOnLaunch 纠亚,但它對(duì)單個(gè) Activity 起作用塘慕,而非整個(gè)任務(wù)。 此外蒂胞,它還有可能會(huì)導(dǎo)致任何 Activity 停止图呢,包括根 Activity。 設(shè)置為 "true"
時(shí)骗随,Activity 仍是任務(wù)的一部分蛤织,但是僅限于當(dāng)前會(huì)話。如果用戶離開然后返回任務(wù)鸿染,則任務(wù)將不復(fù)存在指蚜。
<a id="finishOnTaskLaunch" name="finishOnTaskLaunch"> finishOnTaskLaunch</a>
每當(dāng)用戶再次啟動(dòng)其任務(wù)(在主屏幕上選擇任務(wù))時(shí),是否應(yīng)關(guān)閉(完成)現(xiàn)有 Activity 實(shí)例 —“true”表示應(yīng)關(guān)閉涨椒,“false”表示不應(yīng)關(guān)閉摊鸡。 默認(rèn)值為“false”。如果該屬性和 allowTaskReparenting 均為“true”蚕冬,則優(yōu)先使用該屬性免猾。 Activity 的親和關(guān)系會(huì)被忽略。 系統(tǒng)不是更改 Activity 的父項(xiàng)囤热,而是將其銷毀猎提。