Android 许多悬而未决的内容、广播接收器和活动

Android 许多悬而未决的内容、广播接收器和活动,android,alarmmanager,android-pendingintent,Android,Alarmmanager,Android Pendingintent,我正在写一个简单的提醒应用程序。所有提醒都存储在数据库中。我有一个服务,可以查询数据库,并在AlarmManager中创建一个带有附加项和不同时间戳的PendingEvents。我也有一个广播接收器来捕捉AlarmManager的意图。此广播接收器使用提醒选项(解除、打盹等)启动提醒活动。 现在这个计划奏效了,但没有我认为的那么好。若我在前台有一个提醒活动,那个么新的提醒活动就会在它上面开始(当前活动转到后台)。我不想用新活动覆盖当前活动,只想通知用户,在当前活动之后会显示一些新的提醒 正如我所

我正在写一个简单的提醒应用程序。所有提醒都存储在数据库中。我有一个服务,可以查询数据库,并在AlarmManager中创建一个带有附加项和不同时间戳的PendingEvents。我也有一个广播接收器来捕捉AlarmManager的意图。此广播接收器使用提醒选项(解除、打盹等)启动提醒活动。
现在这个计划奏效了,但没有我认为的那么好。若我在前台有一个提醒活动,那个么新的提醒活动就会在它上面开始(当前活动转到后台)。我不想用新活动覆盖当前活动,只想通知用户,在当前活动之后会显示一些新的提醒

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

1) 我已在AndroidManifest中设置提醒活动启动模式为“singleTop”。这里有更多关于启动模式的信息 总之,如果我的广播接收器试图启动已经在前台的活动,它将调用onNewIntent,而不是onCreate

2) 在我的活动中,我必须重写onNewIntent方法,并将所有传入的意图(来自广播)存储在ArrayList中

3) 在finish()之前,我必须从ArrayList中删除当前意图,当它的大小变为零时,我实际上已经完成了()活动

一个重要的补充。在广播接收机中,意图必须具有标志\u活动\u单个\u顶部,如:

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

如果不存在主活动,则不会调用WinEvent。如我所见,这是一个问题: 安卓1.6中发现的Bug仍然存在。所以现在是功能:)

对不起,我的英语很好读,但很难写:)