簡體   English   中英

同時關閉幾個android活動

[英]Closing several android activities simultaneously

在我的應用程序中,您可以瀏覽多個活動,直到活動堆棧非常深。

我們希望每個Activity上都有一個按鈕,可以直接返回主菜單 - 即除了第一個活動外,從堆棧中彈出所有活動。

我把按鈕放在一個View中,我可以很容易地把它放在應用程序中的每個Activity上,但是我無法弄清楚如何一舉關閉幾個Activity。

(如果可能的話,如果View可以計算出自己關閉多少個活動就好了 - 也就是檢測它自己的Activity有多深。)

看看意圖標志FLAG_ACTIVITY_CLEAR_TOP ,它表示它將目標活動帶到堆棧頂部,刪除其上可能已經存在的所有其他內容。 因此,使用您可以添加到所有活動的按鈕來啟動針對主菜單的意圖,並設置該標志。

從文檔:

如果已設置,並且正在啟動的活動已在當前任務中運行,則不會啟動該活動的新實例,而是將關閉其上的所有其他活動,並將此Intent傳遞給(現在開啟) top)舊活動作為新的意圖。

例如,考慮一個由活動組成的任務:A,B,C,D。如果D調用帶有解析為活動B組件的Intent的startActivity(),則C和D將完成,B接收給定的Intent ,導致堆棧現在是:A,B。

上面示例中當前運行的活動B實例將在其onNewIntent()方法中接收您從此處開始的新intent,或者本身已完成並使用新intent重新啟動。 如果它已將其啟動模式聲明為“多個”(默認值)並且您沒有在同一意圖中設置FLAG_ACTIVITY_SINGLE_TOP,那么它將被完成並重新創建; 對於所有其他啟動模式或如果設置了FLAG_ACTIVITY_SINGLE_TOP,則此Intent將被傳遞到當前實例的onNewIntent()。

此啟動模式也可以與FLAG_ACTIVITY_NEW_TASK結合使用:如果用於啟動任務的根活動,它將把該任務的任何當前運行的實例帶到前台,然后將其清除到其根狀態。 這在從通知管理器啟動活動時尤其有用。

你可以聲明第一個活動android:launchMode="singleTask"更多 ),然后用Intent啟動它。

編輯:我的建議是基於你想要返回一個Activity的單個實例的假設。 否則它是不正確的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM