关闭和打开手机后的AlarmManager对象

yil*_*git 6 android broadcasting alarmmanager android-pendingintent

在我的应用程序中,我设置了一个警报

AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
...
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
...
alarmMgr.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(), pendingIntent);
Run Code Online (Sandbox Code Playgroud)

它工作正常,除非我关闭并打开手机.

更具体地说,让我们说在10:20,我将闹钟设置为10:22,然后在10:21关闭并打开电话,闹钟将无效.

可能是什么问题?这是pendingIntent的广播问题还是应该设置alarmManager对象的一些标志,以便它在这样的条件下工作?

Tim*_*nin 17

有关AlarmManager的文档说:

当设备处于睡眠状态(并且可以选择唤醒设备,如果他们在这段时间内熄灭),但已注册的警报被保留,如果它被关闭并重新启动后会被清除.

似乎Android默认包含的AlarmClock即使重启后也能正常工作.

在重新启动后保持警报工作的方法是在启动完成后启动应用程序并使用AlarmManager再次设置所有警报.(事实上​​,您可能只想使用广播设置闹钟,而不是启动您的应用)

是一个StackOverflow问题,涉及在启动时午餐应用程序.

您还可以通过从源读取来查看默认AlarmClock如何执行此操作.您可以从这里阅读和下载