3

Я бегу периодической фоновой задачи с помощью AlarmManager:Проверьте AlarmManager задача выполняется

AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(context, AlarmReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 10 * 60 * 1000, pendingIntent); 

Я поставил флаг PendingIntent.FLAG_UPDATE_CURRENT, но я боюсь, что это переписывает мое расписание, если я запускаю этот код еще раз. Вопросы:

  • Будет ли он сбросить время, и я должен буду ждать 10 минут, чтобы получить событие?
  • Есть ли способ проверить, настроено ли расписание задач тревоги?

ответ

1

Будет ли сброс времени, и я буду ждать 10 минут, чтобы получить событие?

Да, это будет. Согласно документу:

Если уже тревога запланирована на том же IntentSender, он сначала будет отменен.

И согласно

Есть ли способ проверить, если моя тревога графика поставлена ​​задача?

Да, there is несколько решений, которые вы можете проверить.

И, кстати, имейте в виду, что setRepeating является inexact.

Примечание: с API 19 все повторяющиеся аварийные сигналы являются неточными. Если вашему приложению нужны точные сроки доставки, он должен использовать одноразовые точные аварийные сигналы, каждый раз пересматривая сроки, как описано выше. Устаревшие приложения, чья targetSdkVersion ранее, чем API 19, будут по-прежнему иметь все свои аварийные сигналы, включая повторение сигналов тревоги, которые считаются точными.