? ? ? ? taskAffinity 是 Application 和 Activity 的屬性。 Activity 的 taskAffinity ,默認(rèn)為 Application 的 taskAffinity 诚镰,默認(rèn)是包名墓贿。
????????那么孕暇,taskAffinity 會(huì)默認(rèn)使 Activity 在新的棧中分配嗎?
? ? ? ? 答案是:不會(huì)V桓椤R舯取!
? ??????因此氢惋,如果希望 Activity 在新的棧中分配洞翩,還是要使用啟動(dòng)模式(launchMode 屬性)。
可以使用以下命令查看所有存活中的 Activity 信息
????????adb shell dumpsys activity activities
使用場景
????????那taskAffinity到底有什么用呢焰望?有這樣的場景:
? ? ? ? 外賣APP下單 -> 跳轉(zhuǎn)到支付APP -> 支付成功頁面 -> 點(diǎn)擊HOME鍵
? ? ? ? 此時(shí)再次打開外賣APP和支付APP骚亿,哪個(gè)APP會(huì)出現(xiàn)支付成功頁面呢?沒錯(cuò)柿估,是在支付APP里循未。那是怎么實(shí)現(xiàn)呢?
? ? ? ??taskAffinity +?allowTaskReparenting 的使用秫舌。上述例子中的妖,并且支付成功頁面的?allowTaskReparenting 設(shè)置為 true ,支付APP和支付成功頁面的 taskAffinity 相同足陨,就可以了嫂粟。
? ??????allowTaskReparenting 賦予 Activity 在各個(gè) Task 中間轉(zhuǎn)移的特性。一個(gè)在后臺(tái)任務(wù)棧中的 Activity A墨缘,當(dāng)有其他任務(wù)進(jìn)入前臺(tái)星虹,并且 taskAffinity 與 A 相同,則會(huì)自動(dòng)將 A 添加到當(dāng)前啟動(dòng)的任務(wù)棧中镊讼。