AlarmManager и SetInterval на Android

Начиная с API 19, SetInterval в приложениях срабатывает не так как раньше — в строго заданное время, а в тот момент, когда считает необходимым ядро системы. Иногда разрыв между «задуманным» и фактом выполнения аларма достигает нескольких минут.

Вариант обхода: разовый аларм срабатывает корректно. Следовательно после его срабатывания, необходимо создать его снова.

private void restartNotify() {
 am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
 Intent intent = new Intent(this, TimeNotification.class);
 PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
 intent, PendingIntent.FLAG_CANCEL_CURRENT );
 // На случай, если мы ранее запускали активити, а потом поменяли время,
 // откажемся от уведомления
 am.cancel(pendingIntent);
 // Устанавливаем разовое напоминание
 am.set(AlarmManager.RTC_WAKEUP, stamp.getTime(), pendingIntent);
 }<code></code>

Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.