關(guān)于在最近任務(wù)列表中隱藏Activity

1. android:excludeFromRecents

最常見的方式就是這個(gè)excludeFromRecents標(biāo)簽了,它意味著是否應(yīng)從最近使用的應(yīng)用列表(即概覽屏幕)中排除該 Activity 啟動(dòng)的任務(wù)。換言之,當(dāng)該 Activity 是新任務(wù)的根 Activity 時(shí),此屬性確定最近使用的應(yīng)用列表中是否應(yīng)出現(xiàn)該任務(wù)。如果應(yīng)從列表中排除任務(wù),請(qǐng)?jiān)O(shè)置“true”;如果應(yīng)將其包括在內(nèi),則設(shè)置“false”。默認(rèn)值為“false”。
注意:如果Activity不是任務(wù)棧的第一個(gè)Activity,設(shè)置該標(biāo)簽不會(huì)起作用,同理,如果棧內(nèi)第一個(gè)Activity設(shè)置了true,棧內(nèi)其他Activity同樣不會(huì)出現(xiàn)在最近任務(wù)列表里。

2.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS作用和android:excludeFromRecents效果相同,也同樣只對(duì)棧內(nèi)第一個(gè)Activity生效。

3. setExcludeFromRecents

根據(jù)上文可知,android:excludeFromRecents和Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS都只對(duì)棧內(nèi)第一個(gè)Activity,這其實(shí)是因?yàn)樵撛O(shè)置真正針對(duì)Activity棧,在API21之后,針對(duì)Activity棧提供了setExcludeFromRecents方法,可以通過以下方法隱藏自己:

ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
if (am != null) {
    List<ActivityManager.AppTask> tasks;
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
        tasks = am.getAppTasks();
        if (tasks != null && tasks.size() > 0) {
            tasks.get(0).setExcludeFromRecents(exclude);
        }
    }
}

該方式還有一個(gè)優(yōu)點(diǎn),就是你可以在Activity生命周期的任何時(shí)間內(nèi)改變其在最近任務(wù)的可見性,而不是像上面兩種只能在棧內(nèi)第一個(gè)Activity啟動(dòng)時(shí)改變。

?著作權(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ù)。

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