每次警报响起时,使用setExactAndAllowWhileIdle()手动设置新警报:Android

时间:2017-09-08 08:46:55

标签: android alarmmanager android-doze android-doze-and-standby

我知道之前已经多次询问过,但到目前为止我还没有找到适合我的东西。 我正在使用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。即使手机进入深度睡眠或打盹模式,有没有办法做到这一点。 我可以使用计时器或倒计时吗?打瞌睡模式会不会工作?

我经历过如下的许多链接,

但是,我仍无法每隔一分钟拨打一次电话。

我也尝试过使用alarmManager.setAlarmClock(),但仍然没有运气。

我找到了一个链接:https://www.reddit.com/r/androiddev/comments/40ci7v/how_to_set_the_repeating_alarm_which_will_work/

"每次闹钟响起时,您都需要手动设置带有setExactAndAllowWhileIdle()的新闹钟。但是,有一个原因导致不存在setInexactRepeatingAndAllowWhileIdle():这会缩短用户的电池寿命。如果您确实需要,请仅使用此解决方法。"

如果上次闹钟响起时,如何手动设置新闹钟? 拜托,有人可以帮忙吗?

0 个答案:

没有答案