我正在寫一個簡單的提醒應用程序。所有提醒都存儲在數據庫中。我有一個查詢數據庫的服務,並且在AlarmManager中用extras和不同的時間戳做一個pendingIntents。此外,我還有一個廣播接收器可以從AlarmManager中獲取內容。此廣播接收器啓動一個提醒活動,提醒選項(解散,貪睡等)。 現在這個計劃的工作,但不如我認爲應該。如果我在前臺有提醒活動,則新提醒活動開始(當前進入後臺)。我不想用新的活動覆蓋當前的活動,只是通知用戶,在當前之後會顯示一些新的提醒。許多PendingIntents,BroadcastReceiver和活動
0
A
回答
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中發現的錯誤仍然存在。所以現在它的功能:)
對不起,我的英語很容易閱讀,但很難寫:)
相關問題
- 1. SharedPreferences - 活動和BroadcastReceiver
- 2. 獲取AlarmManager中活動PendingIntents的列表
- 3. 活動中的BroadcastReceiver
- 4. 從父活動繼承BroadcastReceiver活動
- 5. 未發現Android活動異常和BroadcastReceiver
- 6. 從活動開始BroadCastReceiver
- 7. Android BroadcastReceiver開始活動
- 8. BroadcastReceiver而不是活動
- 9. 從broadcastReceiver開始multilple活動
- 10. Android:從BroadcastReceiver開始活動
- 11. 在BroadcastReceiver中開始活動
- 12. 使用BroadcastReceiver關閉活動
- 13. 沒有活動的BroadcastReceiver
- 14. 從BroadcastReceiver開始活動
- 15. BroadcastReceiver未啓動活動正確
- 16. 用broadcastreceiver重新啓動主要活動?
- 17. 有許多活動的滑動菜單
- 18. Dropping PendingIntents
- 19. 回到BroadcastReceiver的上一個活動?
- 20. 活動已創建後BroadcastReceiver觸發
- 21. 從活動傳遞參數到BroadcastReceiver
- 22. BroadcastReceiver始終處於活動狀態
- 23. 我想發送值「從BroadcastReceiver到活動」
- 24. 從BroadcastReceiver發送意圖到活動
- 25. 活動 - > AsyncTask - > BroadcastReceiver - >更新UI
- 26. 活動監聽器 - Google Cloud Messaging - BroadcastReceiver
- 27. 在BroadcastReceiver活動中調用方法
- 28. 如何從BroadcastReceiver調用活動方法?
- 29. 從BroadcastReceiver getExtras開始活動爲空
- 30. Android BroadcastReceiver完成並開放活動