Вручную устанавливайте новый будильник с помощью setExactAndAllowWhileIdle() каждый раз, когда будильник срабатывает: Android

Я знаю, что об этом уже спрашивали несколько раз, но до сих пор я не смог найти что-то, что могло бы сработать для меня. Я использую 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_what_will_work/

«Вы должны вручную устанавливать новый будильник с помощью setExactAndAllowWhileIdle() каждый раз, когда будильник срабатывает. Однако есть причина, по которой setInexactRepeatingAndAllowWhileIdle() не существует: это сократит срок службы батареи для ваших пользователей. Используйте этот обходной путь, только если вам действительно нужно Это."

Как я могу вручную установить новый будильник, когда предыдущий будильник отключается? Пожалуйста, кто-нибудь может помочь?


person devgeek    schedule 08.09.2017    source источник