根据文件
cancel
方法
AlarmManager
:
作废取消(挂起内容操作)
删除任何具有匹配意图的警报。任何类型的警报,
其意图与此匹配(如filterEquals(意图)所定义),
将被取消。
这意味着如果
intentA
检测到等于
intentB
,使用
filterEqauls
方法,即。
intentA.filterEquals(intentB)==true
然后
intentB公司
在alarmanger中可用于取消
意图
已在alarmManager中设置。
filterEquals
文件通知:
布尔过滤器相等(其他意图)
确定出于意图的目的,两个意图是否相同
分辨率(过滤)。也就是说,如果他们的操作、数据、类型、类,
和类别相同。这不会比较任何额外数据
包括在意向书中。
这是真的
filterEquals
不关心内部的额外参数,但其他参数如
Action
应该是
确切地
同样的。
就你而言,你错过了打电话
setAction
在取消意图中。
所以你应该改变你的
cancelTask
方法如下:
public void cancelTask()
{ int id=Integer.valueOf(eventid);
Intent intent = new Intent(update_task.this, events_receiver.class);
intent.setAction("Dog_alarm");//<--- this is missed
AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
PendingIntent task = PendingIntent.getBroadcast(this, id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarm.cancel(task);
}