簡體   English   中英

在有目的的情況下啟動活動之前,請清除活動堆棧

[英]Clear the activity stack before launching activity with intent

我正在處理Android應用程序的C2DM通知,當用戶單擊通知時,我想打開我的應用程序。 這樣做沒有問題,這很容易。 問題在於,當應用程序啟動時(單擊通知后),如果先前已打開某些活動,則啟動的活動似乎已添加到實際的活動堆棧中,這與我的應用程序的復雜性有關(存在是很多活動,其中一些活動包含靜態字段)。

要解決該問題,可以采用以下兩種解決方案:

1)不要調用特定活動,而只是要求打開我的應用程序(例如,當我單擊主屏幕上的應用程序圖標時:如果應用程序已關閉,則打開第一個活動;如果已打開,則將其置於最前面(但在后台)。

2)清除所有活動堆棧並啟動特定活動。

但是我沒有成功做這兩種解決方案之一。 即使使用意圖標志(例如http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP )。

有人可以幫我解決這個問題嗎?

謝謝

PS:對不起,我的英語不好,我來自比利時:-)

這不是您要執行的操作,但是您可以將屬性android:launchMode="singleTask"到要從此通知中調用的活動中,並且如果此實例已經存在,則不會創建新活動。

您可能還可以使用ActivityManager.killBackgroundProcesses(String packageName)刪除后台進程,但是我從未嘗試過這樣做,因此不建議這樣做,也可以使用ChriZzZ建議並更加嚴格地管理您的活動。

聽起來好像您在搜索FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

如果設置,則標記任務活動堆棧中的一個點,該點在重置任務時應清除。 也就是說,下次使用FLAG_ACTIVITY_RESET_TASK_IF_NEEDED將任務帶到前台(通常是由於用戶從家中重新啟動它)

暫無
暫無

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

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