我知道之前已经多次询问过,但到目前为止我还没有找到适合我的东西。 我正在使用setRepeating()来安排警报管理器每分钟运行一次。 但是,在Android 6.0 Doze模式之后,这已停止工作。我也尝试过使用setExactAndAllowWhileIdle(),但它似乎没有重复,因为它不是setexactRepeating。
以下是我的代码,
PendingIntent service; // A pending intent object
Intent intentForService = new Intent(
context.getApplicationContext(),
ServiceToUpdateWidget.class);
final AlarmManager alarmManager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
final AlarmManager.AlarmClockInfo alarmClockInfo = new AlarmManager.AlarmClockInfo(System.currentTimeMillis(), service);
final Calendar time = Calendar.getInstance();
time.set(Calendar.MINUTE, 0);
time.set(Calendar.SECOND, 0);
time.set(Calendar.MILLISECOND, 0);
if (service == null) {
service = PendingIntent.getService(context, 0,
intentForService, PendingIntent.FLAG_CANCEL_CURRENT);
}
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),60000, service);
我需要每分钟调用一次ServiceToUpdateWidget。即使手机进入深度睡眠或打盹模式,有没有办法做到这一点。 我可以使用计时器或倒计时吗?打瞌睡模式会不会工作?
我经历过如下的许多链接,
How to make Alarm Manager work when Android 6.0 in Doze mode?
How to set the repeating alarm which will work even in Doze mode?
AlarmManager not set or not firing on Marshmallow after certain time
但是,我仍无法每隔一分钟拨打一次电话。
我也尝试过使用alarmManager.setAlarmClock(),但仍然没有运气。
我找到了一个链接:https://www.reddit.com/r/androiddev/comments/40ci7v/how_to_set_the_repeating_alarm_which_will_work/
"每次闹钟响起时,您都需要手动设置带有setExactAndAllowWhileIdle()的新闹钟。但是,有一个原因导致不存在setInexactRepeatingAndAllowWhileIdle():这会缩短用户的电池寿命。如果您确实需要,请仅使用此解决方法。"
如果上次闹钟响起时,如何手动设置新闹钟? 拜托,有人可以帮忙吗?