2013-02-08 49 views
0

我正在寫一個簡單的提醒應用程序。所有提醒都存儲在數據庫中。我有一個查詢數據庫的服務,並且在AlarmManager中用extras和不同的時間戳做一個pendingIntents。此外,我還有一個廣播接收器可以從AlarmManager中獲取內容。此廣播接收器啓動一個提醒活動,提醒選項(解散,貪睡等)。 現在這個計劃的工作,但不如我認爲應該。如果我在前臺有提醒活動,則新提醒活動開始(當前進入後臺)。我不想用新的活動覆蓋當前的活動,只是通知用戶,在當前之後會顯示一些新的提醒。許多PendingIntents,BroadcastReceiver和活動

回答

0

正如我想,我已經找到了我的任務一個很好的解決方案:

1)我在AndroidManifest設置我的提醒活動launchMode是「singleTop」。有關launchMode的更多信息,請參見http://developer.android.com/guide/topics/manifest/activity-element.html 兩個詞,如果我的廣播接收器試圖啓動已經在前臺的活動,它會調用onNewIntent,而不是onCreate。

2)在我的活動中,我必須重寫onNewIntent方法並將所有傳入的intent(從廣播)存儲在ArrayList中。

3)finish()之前我必須從ArrayList中移除當前的Intent,當它的大小變成零時,我已經完成了()該活動。

一個重要的補充。在廣播接收方中,意圖必須具有FLAG_ACTIVITY_SINGLE_TOP,例如:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);

沒有它,如果沒有主要活動出現onNewIntent將不會被調用。正如我所看到的,這是知道的問題:http://code.google.com/p/android/issues/detail?id=4155 在Android 1.6中發現的錯誤仍然存​​在。所以現在它的功能:)

對不起,我的英語很容易閱讀,但很難寫:)