如何调试 AlarmManager 激活的服务

How to debug an AlarmManager-activated service

我正在实施一个小部件,它根据一天中的时间检查每分钟和每小时之间的在线火车出发时间。 使用

调用服务
 manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
        SystemClock.elapsedRealtime() - 10000, 60000, pendingIntent)

工作正常,但为了调试,我想将间隔减少到大约 10 秒,但由于 Android 的较新版本中有 1 分钟的限制,因此无法做到这一点。显然,我不关心模拟器的电池寿命。

据我了解,使用 Hander/Timer 不是一种选择,因为它要求任务位于前台。是一个可见的小部件 "in the forground"? 在这种情况下推荐的做法是什么?

你实际上必须完成任务

  • 将 alarmmanager 配置为 add/remove 通过 intents 触发事件
  • 用服务中的意图解释事件

如果将两者分开,您可以轻松创建一个非常简单的 gui/activity,它的功能与 alarmmanager 在被触发时的功能相同,并且您可以进行调试:

* onSendButtonClick: create and send pendingIntent

对于 alarmmanager 处理,我将在每次 alarmmanager 为 added/removed/triggered 时实现登录到文本文件。

请做好准备,较新的 android 版本可能会推迟 alarmmanager 事件以节省能源,直到设备已经处于活动状态,并且小于 15 分钟的间隔可能不起作用。

您可能还需要on_boot_complete 在设备关闭后重新配置 alarmmanager