Вручную установите новый сигнал тревоги с помощью 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_which_will_work/

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

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

0 ответов

Другие вопросы по тегам