【发布时间】:2016-02-25 13:54:04
【问题描述】:
我制作了一个在 Android 6.0 之前一直可用的应用。我认为这是打盹功能,它不允许我的闹钟触发。
我使用 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+ 上是不准确的。 “这也会导致电池耗尽”——这似乎不太可能。不运行的代码不应该消耗电池。 -
嗨@CommonsWare,52 次唤醒和 52 次警报......它总是在发出警报。
setRepeating()会在那一刻触发,我认为没问题。 -
@FilipeOS 你成功了吗?我们可以在打盹模式下实现alarmManager.setRepeating()吗?
-
@devgeek 只像这样并创建一个服务来检查启动等。 setExactAndAllowWhileIdle on >M 和旧版本 setExact
-
setExact 不会重复。如果我需要让它重复怎么办? @FilipeOS
标签: android alarmmanager android-pendingintent android-alarms android-doze-and-standby