У меня есть класс обслуживания, расширяющий IntentService
, у меня проблемы с получением AlarmManager
на работу.Внутри onCreate()
я установил будильник следующим образом:
private void setCleanupWakeAlarm(long interval) {
Log.d(TAG, String.valueOf(System.currentTimeMillis()));
Log.d(TAG, String.valueOf(System.currentTimeMillis() + interval));
Long time = System.currentTimeMillis() + interval;
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
PendingIntent pending= PendingIntent.getService(LoggerService.this, 0, new Intent(ACTION_FLUSH), 0);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// Wakes up the device in Doze Mode
am.setExactAndAllowWhileIdle(AlarmManager.RTC, time, pending);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// Wakes up the device in Idle Mode
am.setExact(AlarmManager.RTC, time, pending);
} else {
// Old APIs
am.set(AlarmManager.RTC, time, pending);
}
}
Протестировал его на всех API в заданном диапазоне - ничего не работает.Я проверил время в mils
с помощью отладчика и все правильно.