Android 如何取消AlarmManager
我已按如下方式设置alarmManager:Android 如何取消AlarmManager,android,alarmmanager,Android,Alarmmanager,我已按如下方式设置alarmManager: Intent intent = new Intent(TopActivity.this, RecordActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); intent.putExtra(Utils.KEY_RECORD_TIME, recordLength); intent.putExtra(Utils.KEY_REC_START_TIM
Intent intent = new Intent(TopActivity.this, RecordActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra(Utils.KEY_RECORD_TIME, recordLength);
intent.putExtra(Utils.KEY_REC_START_TIME, start);
saveTimeAndLength(start, recordLength);
PendingIntent pintent = PendingIntent.getActivity(TopActivity.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pintent);
下面应该取消它,但它总是失败。我错过了什么
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(TopActivity.this, RecordActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra(Utils.KEY_RECORD_TIME, start);
intent.putExtra(Utils.KEY_REC_START_TIME, recordLength);
PendingIntent pintent = PendingIntent.getActivity(TopActivity.this, 0, intent, 0);
try {
alarmManager.cancel(pintent);
Log.e(TAG, "Cancelling all pending intents");
} catch (Exception e) {
Log.e(TAG, "AlarmManager update was not canceled. " + e.toString());
}
我已经阅读了很多关于StackOverflow的答案,但仍然无法找出问题所在。
提前谢谢 您需要创建挂起的意图,然后取消它
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent updateServiceIntent = new Intent(context, MyPendingIntentService.class);
PendingIntent pendingUpdateIntent = PendingIntent.getService(context, 0, updateServiceIntent, 0);
// Cancel alarms
try {
alarmManager.cancel(pendingUpdateIntent);
} catch (Exception e) {
Log.e(TAG, "AlarmManager update was not canceled. " + e.toString());
}
您需要创建挂起的意图,然后取消它
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent updateServiceIntent = new Intent(context, MyPendingIntentService.class);
PendingIntent pendingUpdateIntent = PendingIntent.getService(context, 0, updateServiceIntent, 0);
// Cancel alarms
try {
alarmManager.cancel(pendingUpdateIntent);
} catch (Exception e) {
Log.e(TAG, "AlarmManager update was not canceled. " + e.toString());
}
AlarmManager要取消事件,需要比较两种意图 这是通过filterEquals意图的其他方法实现的 确定出于意图的目的,两个意图是否相同 分辨率过滤。也就是说,如果他们的动作、数据、类型、类, 和类别是一样的。这不会比较任何额外数据 包含在意图中 我不知道为什么它在类相同时不匹配 我也有同样的问题,为了克服这个问题,我还设置了一个数据集 看看这是否对你有帮助 编辑 设置警报时
Intent intent = new Intent(TopActivity.this, RecordActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra(Utils.KEY_RECORD_TIME, recordLength);
intent.putExtra(Utils.KEY_REC_START_TIME, start);
intent.setData(Uri.fromParts("yourappscheme", "alarm", null));
saveTimeAndLength(start, recordLength);
PendingIntent pintent = PendingIntent.getActivity(TopActivity.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pintent);
什么时候需要取消
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(TopActivity.this, RecordActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra(Utils.KEY_RECORD_TIME, start);
intent.putExtra(Utils.KEY_REC_START_TIME, recordLength);
intent.setData(Uri.fromParts("yourappscheme", "alarm", null));
PendingIntent pintent = PendingIntent.getActivity(TopActivity.this, 0, intent, 0);
try {
alarmManager.cancel(pintent);
Log.e(TAG, "Cancelling all pending intents");
} catch (Exception e) {
Log.e(TAG, "AlarmManager update was not canceled. " + e.toString());
}
AlarmManager要取消事件,需要比较两种意图 这是通过filterEquals意图的其他方法实现的 确定出于意图的目的,两个意图是否相同 分辨率过滤。也就是说,如果他们的动作、数据、类型、类, 和类别是一样的。这不会比较任何额外数据 包含在意图中 我不知道为什么它在类相同时不匹配 我也有同样的问题,为了克服这个问题,我还设置了一个数据集 看看这是否对你有帮助 编辑 设置警报时
Intent intent = new Intent(TopActivity.this, RecordActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra(Utils.KEY_RECORD_TIME, recordLength);
intent.putExtra(Utils.KEY_REC_START_TIME, start);
intent.setData(Uri.fromParts("yourappscheme", "alarm", null));
saveTimeAndLength(start, recordLength);
PendingIntent pintent = PendingIntent.getActivity(TopActivity.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pintent);
什么时候需要取消
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(TopActivity.this, RecordActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra(Utils.KEY_RECORD_TIME, start);
intent.putExtra(Utils.KEY_REC_START_TIME, recordLength);
intent.setData(Uri.fromParts("yourappscheme", "alarm", null));
PendingIntent pintent = PendingIntent.getActivity(TopActivity.this, 0, intent, 0);
try {
alarmManager.cancel(pintent);
Log.e(TAG, "Cancelling all pending intents");
} catch (Exception e) {
Log.e(TAG, "AlarmManager update was not canceled. " + e.toString());
}
我将在这里发布我的答案,希望能帮助其他人节省一些时间。 不知何故,在两侧添加当前的flag pendingent.flag_UPDATE_解决了问题 解决了这个问题。 设定报警 取消警报
我将在这里发布我的答案,希望能帮助其他人节省一些时间。 不知何故,在两侧添加当前的flag pendingent.flag_UPDATE_解决了问题 解决了这个问题。 设定报警 取消警报
我想我也在做同样的事情!我想我也在做同样的事情!你能告诉我你是如何克服你的问题的吗。我所做的一切似乎都不起作用。@Vivek Khandelwal我甚至保存了我在警报中设定的意图并取消了它,但它不起作用。我还没有尝试过你的方法,不知何故添加了flag pendingent.flag_UPDATE_CURRENT解决了我的问题。真奇怪!你能告诉我你是如何克服你的问题的吗。我所做的一切似乎都不起作用。@Vivek Khandelwal我甚至保存了我在警报中设定的意图并取消了它,但它不起作用。我还没有尝试过你的方法,不知何故添加了flag pendingent.flag_UPDATE_CURRENT解决了我的问题。真奇怪!有人已经提到,额外的数据键是反转的开始和记录长度?intent.putextutils.KEY\u RECORD\u TIME,recordLength;intent.putextratils.KEY\u REC\u START\u TIME,START;vs.intent.putExtratils.KEY\u RECORD\u TIME,start;intent.putExtraUtils.KEY\u REC\u START\u TIME,recordLength;-不过,这应该不会造成过滤问题……有人已经提到,额外的数据键是反转的开始和记录长度?intent.putextratils.KEY\u RECORD\u TIME,recordLength;intent.putextratils.KEY\u REC\u START\u TIME,START;vs.intent.putExtratils.KEY\u RECORD\u TIME,start;intent.putExtraUtils.KEY\u REC\u START\u TIME,recordLength;-但它不应该引起过滤问题。。。