2014-10-08 52 views
1

搜索並找不到解決方案。有沒有人有同樣的問題,並找到解決辦法?如何避免舊的意圖被髮送到Activity :: onCreate()

具有處理共享的活動(與launchMode =「singleTask」)。

當活動正在運行時,打開相機應用程序以通過此應用程序進行分享。此活動的onNewIntent(Intent intent)用Intent {act = android.intent.action.SEND ...}調用。共享請求處理得非常好。

然後點擊「返回」按鈕關閉應用程序。 現在打開正在運行的應用程序托盤(長按主頁按鈕),並選擇此應用程序來打開它。

應用程序的活動onCreate()使用savedInstanceState == null調用,並且上次共享請求的相同意圖傳入:{act = android.intent.action.SEND ...}。

在這種情況下,它會一直打開應用程序來處理一些共享請求,這已經處理過。

有沒有辦法避免消耗的意圖再次被傳入?

謝謝! /L

+0

我不認爲你可以避免消耗的意圖再次通過。但是,您可以檢查活動是否從歷史記錄啓動,如果是這種情況,請不要再處理它。看看這個答案:http://stackoverflow.com/a/25535915/1970641 – 2014-10-08 20:09:33

+0

謝謝塔託。問題有一段時間你無法分辨活動是否重新啓動。在點擊「返回」按鈕並從正在運行的應用程序托盤中重新打開應用程序的情況下,onCreate()會以saveInstanceState == null的形式傳入,因此它與新的開始時相同 – lannyf 2014-10-08 20:19:38

+0

這就是爲什麼我'你是否檢查過布爾型launchFromHistory = intent!= null?(intent.getFlags()&Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY)!= 0:false;'答案的一部分? – 2014-10-08 20:24:56

回答

0

謝謝Tato! Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY是這種情況的解決方案。有關詳細信息,請參閱stackoverflow.com/a/25535915/1970641中的Tato的答案。

相關問題