许多PendingIntents,BroadcastReceiver和活动

时间:2013-02-08 16:09:13

标签: android alarmmanager android-pendingintent

我正在写一个简单的提醒应用。所有提醒都存储在DB中。我有一个查询数据库的服务,并在AlarmManager中使用额外的和不同的时间戳创建pendingIntents。我还有一个广播接收器来捕获来自AlarmManager的Intent。此广播接收器启动提醒活动,其中包含提醒选项(解除,暂停等)。 现在这个计划有效,但不如我想的那么好。如果我在前台有提醒活动,则会启动新的提醒活动(当前转到后台)。我想不要用新的活动覆盖当前活动,只是通知用户,当前活动后会显示一些新的提醒。

1 个答案:

答案 0 :(得分:0)

我认为,我已经为我的任务找到了一个很好的解决方案:

1)我在AndroidManifest中设置了我的提醒活动launchMode是“singleTop”。有关launchMode的更多信息,请访问http://developer.android.com/guide/topics/manifest/activity-element.html 换句话说,如果我的广播接收器尝试启动已经在前台的活动,它会调用onNewIntent,而不是onCreate。

2)在我的活动中,我要覆盖onNewIntent方法并将所有传入的意图(来自广播)存储在ArrayList中。

3)在结束之前()我要从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中发现的Bug仍然存在。所以现在它的特点是:)

对不起我的英语,我很容易阅读,但很难写:)