我正在开发一个具有闹钟功能的android项目。
我为每个警报实例安排一个intentService(例如,在晚上9点触发)。此intentService构建通知并显示它。通知包括fullScreenIntent,它按预期工作并启动活动。我使用以下代码执行此操作:
alarmActivityIntent = new Intent(this, AlarmActivity.class);
PendingIntent alarmActivityPendingIntent = PendingIntent.getActivity(this, alertSchedule.getIntentId(), alarmActivityIntent, PendingIntent.FLAG_CANCEL_CURRENT);
mBuilder.setFullScreenIntent(alarmActivityPendingIntent, true);
Notification mNotification = mBuilder.build();
mNotificationManager.notify(alertSchedule.getIntentId(), mNotification);
当只有一个警报设置为在特定时间触发时,这可以正常工作,但是如果两个警报设置为在特定时间触发行为更改。
我希望第一个fullScreenIntent启动它的活动,然后当该活动完成时,显示下一个活动。我相信我想建立一个任务堆栈,并将这些警报意图推送到它上面。然而,这对我来说是全新的。
是否可以对这些通知进行分组?
答案 0 :(得分:0)
如果您使用全屏Intent
功能,则根本不需要使用IntentService
或Notification
。只需让AlarmManager
在发生时Activity
开始。
您不想构建任务堆栈,这太复杂了。如果您有多个可同时触发的闹钟,则AlarmManager
每次都可以启动相同的Activity
。将此Activity
的启动模式设置为singleTop
(在清单中),这样如果警报触发时Activity
已经显示,则不会创建{Activity
的另一个实例1}}位于现有的{1}}之上,而是通过在Intent
的现有实例上调用onNewIntent()
来传递Activity
。在onNewIntent()
中,您可以将Intent
的数据(附加内容)保存在用户完成当前显示的Activity
时将处理的队列中。要做到这一点,只需覆盖onBackPressed()
,这样当用户按下BACK按钮完成当前Activity
时,您可以检查队列中是否还有其他警报等待。如果没有,您只需致电super.onBackPressed()
即可完成Activity
。如果队列中有任何内容,您可以删除队列中的第一个元素并在Activity
中显示该元素。继续这样做,直到队列为空。