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

时间:2012-01-07 23:33:14

标签: android alarmmanager android-pendingintent broadcasting

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

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对象的标志,以便它在这样的条件下工作?

1 个答案:

答案 0 :(得分:17)

有关AlarmManager的文档说明:

  

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

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

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

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

您还可以通过从源读取来查看默认AlarmClock如何执行此操作。 您可以从here

阅读并下载