停止Android alarmmanager的setrepeat

Posted

技术标签:

【中文标题】停止Android alarmmanager的setrepeat【英文标题】:Stop the setrepeat of Android alarmmanager 【发布时间】:2011-09-17 08:43:57 【问题描述】:

我已经创建了如下所示的警报

Intent intent = new Intent(this, Areceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(this, 1234567, intent, 0);

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, timenow, 3000, sender);

我创建了一个按钮来停止警报。在 onclick 方法中,我编写了以下代码

Intent intentstop = new Intent(this, Areceiver.class);
PendingIntent senderstop = PendingIntent.getBroadcast(this,
            0, intentstop, 0);
AlarmManager alarmManagerstop = (AlarmManager) getSystemService(ALARM_SERVICE);

alarmManagerstop.cancel(senderstop);

但工作并没有停止。可能是什么问题?

【问题讨论】:

【参考方案1】:

您在启动警报时为您的待处理意图提供了 request_code = 1234567。但是当您尝试停止它时,您使用的是 0。尝试停止时使用它并且应该可以工作

Intent intentstop = new Intent(this, Areceiver.class);
PendingIntent senderstop = PendingIntent.getBroadcast(this,
            1234567, intentstop, 0);
AlarmManager alarmManagerstop = (AlarmManager) getSystemService(ALARM_SERVICE);

alarmManagerstop.cancel(senderstop);

【讨论】:

这对我也有帮助。虽然,我的互联网启动了一项服务,所以我没有使用 PendingIntent.getBroadcast,而是使用了 PendingIntent.getService。谢谢! 是否有保证在服务上调用的方法?不幸的是 onDestroy 在我的情况下没有被调用

以上是关于停止Android alarmmanager的setrepeat的主要内容,如果未能解决你的问题,请参考以下文章

Android AlarmManagers 会在应用更新后继续运行吗?

无法停止使用 alarmManager 启动的服务

如何在 Android 中停止重复警报服务?

Android 后台任务执行

android app被杀死 alarmmanager能不能唤醒

Android - AppWidgets、AlarmManager 和 AsyncTask