Я знаю, что об этом уже спрашивали несколько раз, но до сих пор я не смог найти что-то, что могло бы сработать для меня. Я использую 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 каждую минуту. Есть ли способ сделать это, даже когда телефон переходит в режим глубокого сна или дремоты. Могу ли я использовать таймер или обратный отсчет для этой цели? Будет ли работать в спящем режиме?
Я прошел через много ссылок, как показано ниже,
Как заставить работать Alarm Manager когда Android 6.0 в спящем режиме?
Как установить повторяющийся будильник который будет работать даже в спящем режиме?
AlarmManager не установлен или не срабатывает на Marshmallow после определенного время
Тем не менее, я все еще не могу звонить в свою службу каждую минуту.
Я также пытался использовать alarmManager.setAlarmClock(), но безуспешно.
Я нашел ссылку, которая гласит: https://www.reddit.com/r/androiddev/comments/40ci7v/how_to_set_the_repeating_alarm_what_will_work/
«Вы должны вручную устанавливать новый будильник с помощью setExactAndAllowWhileIdle() каждый раз, когда будильник срабатывает. Однако есть причина, по которой setInexactRepeatingAndAllowWhileIdle() не существует: это сократит срок службы батареи для ваших пользователей. Используйте этот обходной путь, только если вам действительно нужно Это."
Как я могу вручную установить новый будильник, когда предыдущий будильник отключается? Пожалуйста, кто-нибудь может помочь?