Почему не срабатывает будильник в приложении Android?
В приложении нужно встроить будильник, сделали, но он срабатывает только когда приложение находится в памяти, как только выгружаем - будильник не работает. Как решить проблему?
Денис Загаевский: Используется broadcast receiver + alarmManager
Метод который сетит
public void setOnetimeTimer(Context context, Calendar calendar, int id) {
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
long time = calendar.getTimeInMillis();
Intent intent = new Intent(context, TimeNotification.class);
intent.putExtra(ONE_TIME, Boolean.TRUE);
intent.putExtra("id", id);
PendingIntent pi = PendingIntent.getBroadcast(context, id, intent, id);
am.setRepeating(AlarmManager.RTC_WAKEUP, time, AlarmManager.INTERVAL_DAY * 7, pi);
}
Денис Загаевский: Doze mode ведь приходит со временем и после отключения экрана да и на 6ом дроиде, поэтому это пока не совсем важное, тестили на 5.1 и на 4.2 дроиде (оболочка MiUI и Emotion UI соответственно), ресивер регистрируем через манифест.
На данный момент будильник отрабатывает стабильно при заблокированном/не заблокированном экране и когда не выгружено из памяти, но при заблокированном экране и свёрнутом приложении будильник иногда срабатывает позже ( на 1-5 минут).