首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android中设置多个警报的最佳方法--当某些警报在本质上重复时

问在Android中设置多个警报的最佳方法--当某些警报在本质上重复时
EN

Stack Overflow用户
提问于 2012-07-09 10:44:00
回答 1查看 1.2K关注 0票数 3

我正在构建一个提醒应用程序,其中一次,每周,每月提醒,我们通知用户的提醒在到期日和时间。提醒可以由用户随时更新,以更新提醒时间或完全删除提醒。我想出了解决这个问题的两种方法。

  1. 每当用户设置提醒时,请使用唯一的Id相应地调度警报,并在用户更新或删除警报时更新或删除它。
  2. 由于我将提醒时间存储在DB中,更好的方法是为最近的提醒安排一个警报。并让由警报计划触发的服务为下一次最近的提醒设置一个新的警报。

第二种方法看起来很干净,但我们该如何处理由警报触发的服务在为下一次提醒排定新警报之前被系统杀死的情况?

编辑看起来就像如果系统为了内存而关闭服务,它将重新创建服务。这是否意味着在每次运行时依靠服务来安排警报是安全的?

编辑2我意识到,每当设备重新启动时,安卓就会杀死任何警报。这使方法2成为更好的解决方案。我现在已经实现了。

EN

回答 1

Stack Overflow用户

发布于 2019-09-17 14:20:01

需要以完全相同的方式创建挂起的意图,以取消已经设置的警报。如果希望在某个时间激活单个警报,则可以在设置新警报时取消先前的警报。

设置警报器使用:

代码语言:javascript
复制
Intent myIntent = new Intent(getApplicationContext(), SessionReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 1, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

alarmManager.set(AlarmManager.RTC, now.getTimeInMillis(), pendingIntent);

取消警报使用:

代码语言:javascript
复制
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent myIntent = new Intent(getApplicationContext(), SessionReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 1, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);

alarmManager.cancel(pendingIntent);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11393473

复制
相关文章

相似问题

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