首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >同时多个全屏android通知,不堆叠

同时多个全屏android通知,不堆叠
EN

Stack Overflow用户
提问于 2017-01-19 01:18:31
回答 1查看 474关注 0票数 1

我正在从事一个android项目,有一个类似于闹钟的功能。

我为每个警报实例安排了一个intentService (例如,在晚上9点触发),这个intentService构建通知并显示它。通知包括一个fullScreenIntent,它按预期工作并启动活动。我使用以下代码来完成此操作:

代码语言:javascript
运行
复制
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开始它的活动,然后当该活动结束时,显示下一个。我相信我想要建立一个任务堆栈,并将这些警报意图推送到它上面。然而,这对我来说都是新的。

是否可以对这些通知进行分组?

EN

Stack Overflow用户

发布于 2017-01-19 05:30:21

如果您使用的是全屏Intent功能,则根本不需要使用IntentServiceNotification。只要让AlarmManagerActivity启动时启动它即可。

你不会想要构建一个任务栈,那太复杂了。如果您有多个可以同时触发的报警,您可以让AlarmManager每次启动相同的Activity。将此Activity的启动模式设置为singleTop (在清单中),这样,如果警报触发时Activity已经显示,它不会在现有的Activity实例之上创建另一个Intent实例,而是通过在Activity的现有实例上调用onNewIntent()来传递Activity。在onNewIntent()中,您可以将Intent的数据(额外的)保存在一个队列中,当用户完成当前显示的Activity时,该队列将被处理。为此,只需覆盖onBackPressed(),以便当用户按下BACK按钮完成当前Activity时,您可以检查队列中是否有任何其他警报在等待。如果没有,您可以只调用super.onBackPressed()来完成Activity。如果队列中有任何内容,您可以删除队列中的第一个元素并将其显示在Activity中。继续这样做,直到队列为空。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41725605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档