AlarmManager и SetInterval на Android
Начиная с API 19, SetInterval в приложениях срабатывает не так как раньше — в строго заданное время, а в тот момент, когда считает необходимым ядро системы. Иногда разрыв между «задуманным» и фактом выполнения аларма достигает нескольких минут.
Вариант обхода: разовый аларм срабатывает корректно. Следовательно после его срабатывания, необходимо создать его снова.
1 2 3 4 5 6 7 8 9 10 11 |
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> |