我的Android應用程序基於四項活動。最後一個活動啓動一個意向服務並將其自身設置爲背景。如何設置所有活動的歷史記錄
之前我發送的最後一個活動背景我想從堆棧中歷史
我想已經設置爲活動沒有歷史= true屬性中刪除所有四項活動。這會導致錯誤,當我使用startActivityForResult,所以我需要一個不同的解決方案
我的Android應用程序基於四項活動。最後一個活動啓動一個意向服務並將其自身設置爲背景。如何設置所有活動的歷史記錄
之前我發送的最後一個活動背景我想從堆棧中歷史
我想已經設置爲活動沒有歷史= true屬性中刪除所有四項活動。這會導致錯誤,當我使用startActivityForResult,所以我需要一個不同的解決方案
我真的不認爲有一個「好」的方式做到這一點,我會嘗試這樣的事:
首先創建一個SelfClosingActivity
其唯一的工作就是打開後關閉本身:
public void onCreate(Bundle savedInstanceState()) {
super.onCreate(savedInstanceState);
finish();
}
當你想關閉所有活動(您啓動IntentService我想以後)運行SelfClosingActivity
,並添加標誌清除當前堆棧。
Intent intent = new Intent(this, SelfClosingActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
這將打開SelfClosingActivity
和SelfClosingActivity
將關閉本身留下棧完全用完之前清除當前的堆棧。
FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_NEW_TASK將做你想做的。
FLAG_ACTIVITY_CLEAR_TOP
在API級別1 INT FLAG_ACTIVITY_CLEAR_TOP如果設置,以及正在啓動的 活動已經在當前任務運行,則 而不是推出該活動的一個新實例,所有其他 上的活動將被關閉,並且這個意圖將 作爲新的意圖傳遞給(現在在上面)舊的活動。
例如,考慮一個由任務的活動:A,B,C,D. 如果d用解析爲活動B的 成分的意圖調用startActivity(),則C和d將是成品和B接收 給定的意圖,導致堆棧現在是:A,B.
該啓動模式也可用於將結合良好的效果與 FLAG_ACTIVITY_NEW_TASK:如果用於啓動的根活動任務 它會將任務的任何當前正在運行的實例帶到前臺 ,然後將其清除到其r ot狀態。例如,在從通知 管理器啓動活動時,這尤其有用,例如: 。
參考Tasks and Back Stack更多信息
但我想從歷史堆棧中刪除中的所有活動。我的最後一項活動啓動了一個在後臺運行的意圖服務 –
,那麼當IntentService運行時,您想向用戶展示什麼? –
我不會向用戶展示任何東西。 IntentService將在較長時間內在後臺運行(上傳大文件)。完成上傳後,它會向用戶發送通知 –