我正在构建一个应用程序,使用AlarmManager
根据用户请求安排wifi,并在以后关闭bt。
有效。我的下一步是允许用户取消。
当然,活动可能会被杀死。想象一下那个场景:
在新创建的活动中,我怎么知道我安排了什么?
另外,我想为这个应用程序制作一个小部件,那么如何将活动中的信息传递给小部件(可能还有其他元素)?
这是我设置闹钟的方法:
int type = AlarmManager.ELAPSED_REALTIME_WAKEUP; // wake up CPU after said time
long delay = SystemClock.elapsedRealtime() + minutes * 60 * 1000;
PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// Need to use this method, otherwise Doze is killing us
manager.setExactAndAllowWhileIdle(type, delay, alarmIntent);
}
else {
manager.setExact(type, delay, alarmIntent);
}
答案 0 :(得分:0)
你可以取消这样的任何警报 -
获取与您要取消的警报关联的待处理意图。
PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
然后取消它。
AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
manager.cancel(alarmIntent);