【问题标题】:AlarmManager alternatives for persistent frequent scheduling用于持续频繁调度的 AlarmManager 替代方案
【发布时间】:2015-09-21 22:44:57
【问题描述】:

我注意到 Android 5.1 不再接受时间间隔小于 60 秒的重复警报 (source)。

我正在开发一个记录有关无线网络信息的应用程序。对于应用程序的操作,它必须每 1-2 秒执行一次操作,并且即使它正在使用大量资源,它也不会被操作系统杀死或挂起。长时间(几个小时)的可靠运行是最重要的。对电池寿命的影响不是问题。

到目前为止,实现此功能的最可靠方法是使用重复警报。现在有了 Android 5.1,这不再是一种选择。替换 AlarmManager 实现的最佳选择是什么?

【问题讨论】:

  • 恕我直言,有两种可能的解决方案 - 设置 60 个警报或使用前台模式实施服务。
  • 前台服务是我尝试的第一件事。记录器一直被操作系统杀死。设置 60 个警报是我从未想过的事情。这绝对值得一试。谢谢!
  • 请注意,当设备处于打盹模式时,您的应用将无法在 Android 6.0 及更高版本上运行。
  • @CommonsWare 我相信至少在 Android M 预览版中,可以逐个应用禁用打盹模式。如果公开发布版本是这种情况,那将不是什么大问题,因为我们的应用程序面向训练有素的专业人员,他们可以很容易地被指示关闭应用程序的打瞌睡模式。
  • “打盹模式可以逐个应用禁用”——不。您正在考虑应用待机,虽然相关,但不是打盹模式。打盹模式会影响静止/非充电设备的所有应用程序。现在,如果您的设备碰巧总是在充电器上,那么在充电器工作时打瞌睡模式将不会启动(例如,建筑物内没有停电)。

标签: java android android-alarms


【解决方案1】:

作为一种解决方法,您可以设置 60 个警报,以便为您当前的实施获得灵活的解决方案。检查操作系统版本并根据需要设置任意数量的警报。

但对于长期解决方案,我建议您实施与音乐播放器类似的粘性前台服务。像 Handler.postDelayed 这样简单的东西应该足以让它保持活力。这样做的原因是警报不准确,最好对过程进行一些控制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 2015-09-11
    相关资源
    最近更新 更多