7

在我的应用程序中,我设置了闹钟

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);

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

更具体地说,假设在 10:20,我将闹钟设置为 10:22,然后在 10:21 关闭并打开手机,闹钟将不起作用。

可能是什么问题?那是那里的pendingIntent 的广播问题还是我应该设置alarmManager 对象的一些标志以使其在这种情况下工作?

4

1 回答 1

19

关于AlarmManager的文档说:

已注册的闹钟在设备处于睡眠状态时会保留(如果在此期间它们响起,可以选择唤醒设备),但如果它关闭并重新启动,则会被清除

即使在重新启动后,Android 默认包含的闹钟似乎也能正常工作。

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

是一个关于启动应用程序午餐的 StackOverflow 问题。

您还可以通过从源代码读取来检查默认的闹钟是如何做到这一点的。您可以从这里阅读和下载

于 2012-01-08T01:35:03.460 回答