我正在建立一个提醒应用程序,其中包含一次,每周,每月提醒,并在截止日期和时间通知用户提醒。用户可以随时更新提醒以更新提醒时间或完全删除提醒。我想到了两种解决特定问题的方法。
第二种方法似乎是干净的方法但是我们如何处理由警报触发的服务在为下一次提醒安排新警报之前被系统杀死的情况?
修改 看起来如果系统杀死内存服务,它将重新创建服务。这是否意味着每次运行时依靠服务来安排警报是安全的?
编辑2 我意识到Android会在设备重启时终止任何警报。这使得方法2成为更好的解决方案。我现在已经实现了它。
答案 0 :(得分:1)
需要使用完全相同的方式来创建挂起的意图,以取消已设置的警报。如果您想在某个时间激活单个警报,则可以在设置新警报时取消上一个警报。
要设置闹钟,请使用:
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);
要取消警报,请使用:
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);