我制作了一个应用,在Android 6.0之前一直能够正常工作。我认为是Doze功能不允许我的闹钟触发。
我使用sharedpreferences来处理选项:
//ENABLE NIGHT MODE TIMER
int sHour = blockerTimerPreferences.getInt("sHour", 00);
int sMinute = blockerTimerPreferences.getInt("sMinute", 00);
Calendar sTime = Calendar.getInstance();
sTime.set(Calendar.HOUR_OF_DAY, sHour);
sTime.set(Calendar.MINUTE, sMinute);
Intent enableTimer = new Intent(context, CallReceiver.class);
enableTimer.putExtra("activate", true);
PendingIntent startingTimer = PendingIntent.getBroadcast(context, 11002233, enableTimer, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager sAlarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
sAlarm.setRepeating(AlarmManager.RTC_WAKEUP,
sTime.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, startingTimer);
这里出了什么问题,有任何线索吗?
这是一个用于屏蔽来电的应用程序。谢谢!
编辑:我有3个文件(还有更多...)如下:
MainActivity (All code)
CallReceiver (Broadcast that triggers the alarm again (reboot etc))
CallReceiverService (Handles the call / phone state)
adb shell dumpsys alarm
确认您的闹钟已被预约。请注意,setRepeating()
在 Android 4.4+ 上是不准确的。 "这也会导致电池耗尽" -- 这似乎不太可能。不运行的代码应该不会消耗电池。 - CommonsWaresetRepeating()
会在那一分钟触发,没有问题。 - FilipeOS