设置和重置闹钟的 Android AlarmManager 问题

标签 android android-intent alarm alarmmanager android-pendingintent

我使用警报从服务器获取数据。 我喜欢为用户提供启动和停止闹钟的选项。 这意味着我必须检查并查看是否已设置警报。 我找到了一些代码,告诉我闹钟是否已设置:

Intent I = new Intent(getApplicationContext(),AlarmReceiver.class);
PendingIntent P = PendingIntent.getBroadcast(getApplicationContext(), 0, I, PendingIntent.FLAG_NO_CREATE);
found = (P!=null);

如果已经设置了闹钟,我会取消它,但如果没有设置,我会设置它(就像切换一样)

问题是这只能工作一次。上面的代码第一次检查已有的告警 将返回 null 表示没有警报但是在我取消警报后一旦它返回一个指针 到某事,但警报没有运行。

这里是设置闹钟的代码

am = (AlarmManager) getSystemService(getApplicationContext().ALARM_SERVICE);
Intent I = new Intent(getApplicationContext(),AlarmReceiver.class);
PendingIntent P = PendingIntent.getBroadcast(getApplicationContext(), 0, I, PendingIntent.FLAG_CANCEL_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 60000, P); 

下面是取消闹钟的代码:

am = (AlarmManager) getSystemService(getApplicationContext().ALARM_SERVICE);
Intent I = new Intent(getApplicationContext(),AlarmReceiver.class);
PendingIntent P = PendingIntent.getBroadcast(getApplicationContext(), 0, I, PendingIntent.FLAG_CANCEL_CURRENT);
am.cancel(P);

我是否要在取消警报后重置某些东西以使其 PendingIntent 消失。

最佳答案

取消 AlarmManager 时,不要使用带有 FLAG_CANCEL_CURRENT 标志的 PendingIntent。 相反,取消警报后显式取消 PendingIntent:

am = (AlarmManager) getSystemService(getApplicationContext().ALARM_SERVICE);
Intent i = new Intent(getApplicationContext(),AlarmReceiver.class);
PendingIntent p = PendingIntent.getBroadcast(getApplicationContext(), 0, i, 0);
am.cancel(p);
p.cancel();

关于设置和重置闹钟的 Android AlarmManager 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4963271/

相关文章:

iphone - 如何以编程方式为 iPhone 和 iPad 播放闹钟?

android - 没有找到 id 的 View ... 对话框中的 fragment

java - 重启后第二天闹钟管理器不起作用

java - 上传前文件上传进度跳到 100%

Android - 显示电话簿联系人并选择一个

android - onResume() 中的 getIntent() 始终返回相同的操作,如何使用它?

java - 解析 JSON 时出错

android - 关闭并打开 android 手机后闹钟不工作

android - 无法在离线模式下构建。 "No cached version listing for androidx.fragment:fragment:[1.2.0] available for offline mode"

android - 我无法在 android 中调试 Home 示例应用程序