同一個(gè)App不同Activity顯示多任務(wù)引發(fā)的問(wèn)題

同步發(fā)布到CSDN:https://blog.csdn.net/ling9400/article/details/80179198
轉(zhuǎn)載請(qǐng)注明出處

通過(guò)同一個(gè)app不同activity顯示多任務(wù)(仿微信小程序切換效果)這篇文章可以知道:

實(shí)現(xiàn)activity在recent task中,必須給需要打開的activity設(shè)置如下代碼

Intent intent = new Intent(myContext, ZDActivity.class);
intent.addFlag(Intent.FLAG_ACTIVITY_NEW_DOUCMENT);
...
startActivity(intent);

當(dāng)打開該activity之后,切換到recent task頁(yè)面,則會(huì)顯示兩個(gè)task.

然后這邊的需求是要在targetActivity中通過(guò)廣播來(lái)開啟另外一個(gè)activityB

此時(shí)啟動(dòng)的Activity必須添加intent.addFlag(Intent.FLAG_ACTIVITY_NEW_TASK)才能開啟,這是在廣播中開啟activity的必須條件,
這樣就會(huì)出現(xiàn)問(wèn)題:

假設(shè)啟動(dòng)ZDActivity的activity是ActivityA,廣播啟動(dòng)的activity是ActivityB,問(wèn)題就是通過(guò)廣播啟動(dòng)ActivityB時(shí),會(huì)跳轉(zhuǎn)到ActivityA,然后再啟動(dòng)ActivityB,同時(shí)切換到recent task頁(yè)面,會(huì)顯示三個(gè)task,這里不信的伙伴可以手動(dòng)試試就能看到效果。

要想解決這個(gè)問(wèn)題就必須要了解activity的taskAffinity屬性的使用

了解之后知道,只需要在manifest.xml中設(shè)置ActivityB的taskAffinity屬性即可,必須設(shè)置成跟包名不一樣,因?yàn)槟J(rèn)就是包名,這樣就已經(jīng)解決了通過(guò)廣播啟動(dòng)ActivityB時(shí),會(huì)跳轉(zhuǎn)到ActivityA,然后在啟動(dòng)ActivityB的問(wèn)題。

當(dāng)設(shè)置了taskAffinity屬性之后,不會(huì)跳轉(zhuǎn)到ActivityA了,但同樣還是會(huì)顯示三個(gè)task的問(wèn)題,這里暫時(shí)還沒有解決方案,請(qǐng)知道的小伙伴指點(diǎn)明路。

然后就回到上篇文章中說(shuō)的沒有使用finishAndRemoveTask()方法沒問(wèn)題的結(jié)論:錯(cuò)誤

很明顯,這里ActivityB的task需要關(guān)閉ActivityB的時(shí)候使用finishAndRemoveTask()方法才能關(guān)掉,但只能在5.0以上起作用,5.0以下添加intent.addFlag(Intent.FLAG_ACTIVITY_NEW_DOCUMENT)不起作用。

最后再說(shuō)下在這個(gè)場(chǎng)景下使用分享的問(wèn)題:

當(dāng)通過(guò)廣播啟動(dòng)ActivityB之后,ActivityB再啟動(dòng)分享到QQ,這里使用第三方SDK,如Mob等,你會(huì)發(fā)現(xiàn)分享到QQ之后,點(diǎn)擊“回到你的應(yīng)用”居然不會(huì)回到ActivityB,同樣的是回到了ActivityA,也有可能是先回到ActivityA,然后再回到ActivityB,也就是說(shuō)沒有正確的回調(diào)到正確的頁(yè)面,就這個(gè)問(wèn)題也問(wèn)過(guò)Mob的客服,那邊說(shuō)沒有辦法解決。

最后經(jīng)過(guò)不斷測(cè)試,需要在所有第三方配置的回調(diào)Activity中設(shè)置同樣的taskAffinity屬性即可。


QQ回調(diào)
主配置activity,微博回調(diào)

以上內(nèi)容純粹個(gè)人測(cè)試總結(jié),如有問(wèn)題,請(qǐng)聯(lián)系改正,謝謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容