【问题标题】:AlarmManager object after turning off and on the phone手机关机再开机后的AlarmManager对象
【发布时间】:2012-02-05 03:19:21
【问题描述】:

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

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 对象的一些标志以使其在这种情况下工作?

【问题讨论】:

标签: android alarmmanager android-pendingintent broadcasting


【解决方案1】:

关于AlarmManager 的文档说:

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

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

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

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

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

【讨论】:

  • 是否包括关闭屏幕?
  • turning off the screen 表示设备处于睡眠状态。闹钟将保留您关闭屏幕且不完全关闭手机。
  • 我明白了,如果闹钟设置为重复,并且设备长时间休眠会怎样?这是否意味着它将同时获得多个意图(同一个警报)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多