我正在使用Boot接收器来触发AlarmManager,因此它每分钟都会重复它的任务。我希望用户有app选项来启用/禁用在每次重复AlarmManager时执行的操作。到目前为止,我只使用了一个蹩脚的解决方案。我在SharedPreferences中设置了用户的首选项,并且在AlarmManager的每次重复中,我在SharedPreferences中检查用户的首选项,并根据此首选项执行或忽略该功能。
到目前为止,据我所知,没有办法从内部完全破坏AlarmManager。但我可能错了。
此外,由于启动接收器在AndroidManifest.xml中注册,并且只有在调用onReceive时才存在BroadcastReceiver,因此可能无法获取对AlarmManager对象的引用,因此我可以使用AlarmManager从外部取消警报。取消。但我可能错了这一切。
所以我想问一下,如果我弄错了这一切,或者是否有某种方法可以完全销毁/取消在Boot上启动的AlarmManager(从AlaramManager内部或外部,无关紧要)。有任何想法吗?提前致谢
答案 0 :(得分:5)
您可以使用相同的待处理意图随时取消闹钟。
Intent intent = new Intent(show.this, TimeAlarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(show.this, 0,
intent, PendingIntent.FLAG_CANCEL_CURRENT);
<Alarm_Manager_Object>.cancel(pendingIntent);