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