我有一个扩展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
中的时间及其所有正确的数据。