2011-12-14 233 views
2

我正在研究Android應用程序的C2DM通知,並且希望在用戶單擊通知時打開我的應用程序。這沒有問題,這很容易。 問題是,當應用程序啓動時(點擊通知後),如果某些活動先前已打開,啓動的活動似乎已添加到實際活動堆棧中,那麼與我的應用程序的複雜性有關的問題是什麼有很多活動,一些有靜態字段)。在意圖發起活動之前清除活動堆棧

爲了解決這個問題,2個解決方案將是美好的:

1)不要調用特定的活動,但只是問到我的應用程序打開(比如當我點擊主屏幕上的應用程序圖標:打開如果應用程序已關閉,或者只是在應用程序打開(但在後臺)時纔將應用程序置於前面,則爲第一個活動)。

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

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

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

感謝

PS:對不起,我的英文不好,我來自Belgium :-)

回答

1

這不是你要求做的,但你可以添加屬性android:launchMode="singleTask"到您將從此通知中調出的活動,並且如果此實例已存在,則不會創建新活動。

您也可以使用ActivityManager.killBackgroundProcesses(String packageName)刪除後臺進程,但我從來沒有嘗試過這一點,它不建議或使用ChriZzZ建議,並管理你的活動有點緊。

+0

android:launchMode =「singleTask」似乎解決了我的問題。非常感謝你 – ValentinTaleb 2011-12-14 16:29:54

0

聽起來像是你正在尋找FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

如果設置,這標誌着一個點該任務的活動堆棧應在任務重置時清除。也就是說,下一次任務帶到前臺與FLAG_ACTIVITY_RESET_TASK_IF_NEEDED(從家裏通常作爲用戶的結果重新啓動它)