在近期任務列表顯示單個APP的多個Activity

Wing_Li發表於2018-12-12

如果本文幫助到你,本人不勝榮幸,如果浪費了你的時間,本人深感抱歉。 希望用最簡單的大白話來幫助那些像我一樣的人。如果有什麼錯誤,請一定指出,以免誤導大家、也誤導我。 本文來自:www.jianshu.com/u/320f9e8f7… 感謝您的關注。

用過微信小程式的人應該都可以發現,當我們開啟一個小程式之後,在近期任務列表裡面就會新建立一個頁面(MIUI8 好像沒有),感覺這個功能還挺有意思的。 研究一下,發現還挺簡單的。 先上一個效果圖:

在近期任務列表顯示單個APP的多個Activity


有兩種方式可以實現效果

第一種:程式碼實現

即頁面跳轉的時候增加 Flag,

Intent intent = new Intent(this, Main2Activity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);
複製程式碼

新增兩個 Flag 即可,注意關閉的時候要使用:

finishAndRemoveTask();
複製程式碼

**FLAG_ACTIVITY_NEW_DOCUMENT:**此標誌用於將文件開啟到一個 基於此意圖的新任務中; **FLAG_ACTIVITY_MULTIPLE_TASK:**此標誌用於建立新任務並將活動匯入其中。

注意:使用這種方式,必須具有在清單檔案中設定的 android:launchMode="standard" 屬性值(預設就是這個屬性)


第二種:配置 AndroidManifest.xml

在要跳轉的 Activit 配置

<activity
    android:name=".Main3Activity"
    android:documentLaunchMode="intoExisting"
    android:excludeFromRecents="true"
    android:maxRecents="3"/>
複製程式碼

AndroidManifest.xml 中的屬性:

1. documentLaunchMode(啟動模式):

**intoExisting:**如果之前已經開啟過,則會開啟之前的(類似於 Activity 的 singleTask); **always:**不管之前有沒有開啟,都新建立一個(類似於 Activity 的 standard); **none:**不會在任務列表建立新的視窗,依舊顯示單個任務; **never:**不會在任務列表建立新的視窗,依舊顯示單個任務,設定此值會替代 FLAG_ACTIVITY_NEW_DOCUMENT 和 FLAG_ACTIVITY_MULTIPLE_TASK 標誌的行為(如果在 Intent 中設定了其中一個標誌)。

注:對於除 none 和 never 以外的值,必須使用 launchMode="standard" 定義 Activity。如果未指定此屬性,則使用 documentLaunchMode="none"。

2. excludeFromRecents:

預設為 false 。 設定為 true 時,只要你離開了這個頁面,它就會從最近任務列表裡移除掉。

3. maxRecents:

設定為整型值,設定應用能夠包括在概覽螢幕中的最大任務數。預設值為 16。達到最大任務數後,最近最少使用的任務將從概覽螢幕中移除。 android:maxRecents 的最大值為 50(記憶體不足的裝置上為 25);小於 1 的值無效。


專案在這裡:github.com/Wing-Li/App…

相關文章