2011-09-17 48 views
1

我重新啓動了我的HomeActivity並在意圖中設置了一個額外的「relaunchstatus」。在Activity的onCreate()方法中,我檢查這個值,如果存在,顯示一些警報。getIntent()。removeExtra()在Activity中不適用於android:launchmode =「singleTask」?

這項活動的launchmode是android:launchmode="singleTask"

問題而來的用戶看到此警報並關閉它,並再次按後退按鈕關閉該活動後。現在,如果他通過長按「主頁」按鈕從最近的應用列表中啓動它,則會使用同樣的具有額外「重新啓動狀態」的意圖,並再次發出警報。

這隻要不斷爲用戶來自於最近的項目(OK,可能是近期推出的應用程序使用其中有額外的「relaunchstatus」在其設置的目的相同)。

所以我試着通過使用getIntent()。removeExtra(「relaunchstatus」)處理BACK_KEY按鈕來消除這個額外的問題,這個額外的存在仍然存在於Recent items的新發布中。

然而,這是不是這樣的,如果我開始從啓動菜單圖標的應用程序。

更新:所以我猜活動的getIntent()會給你意向的副本啓動它,所以它不喜歡同一個對象的引用上的變化將是永久性的。如果是這樣的話,那麼我們就需要從當前設備的GUI做到這一點(如HTC Sense的等),其最近的項目是結合的意圖,這是不可能的?

+1

一種方法是設置setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS),而再次重新啓動它。所以對於這種情況它不會出現在最近的菜單中,還需要其他方式嗎? – Pritam

回答

2

如果啓動模式爲singleTask且Activity已經存在,而不是onCreate(),則將調用onNewIntent(..)

所以,你需要重寫onNewIntent(..)並檢查Intent那裏。

+0

是的,但我在重新啓動之前完成了我的活動,在這種情況下,因爲所有視圖都需要從文件系統數據更新。因此它的onCreate()被調用,因爲它不存在於任務中。在其他情況下,我需要它重用,所以不能刪除singleTask選項。 – Pritam

相關問題