在用户睡觉时在我的BLE监控应用上处理Android-Doze模式

时间:2017-05-19 22:29:46

标签: android bluetooth background bluetooth-lowenergy doze

我制作的设备可以在睡眠时监控人的健康状况,并通过BLE连接智能手机。

它适用于iOS应用程序。 但是自从Doze模式出现在Android世界之后。 因为我的设备在他的睡眠时间工作,所以很难处理它。

主要功能是它可以检测特定危险并在用户睡觉时通知用户。发生时我需要网络连接。

许多文章告诉我,如果我的应用程序位于白名单中,即使在打盹模式下我也可以使用网络。但在我测试了Doze模式后,它似乎并不正确。 我是对的吗?

当我开火时,我可以确保我可以在列表中找到我的应用

  

adb shell dumpsys deviceidle

我可以采取哪种方法使我的应用正常运行?

  • 前台服务
  • 使用SetExactAndAllowWhileIdle的警报管理器。
  • GCM(这意味着推,对吧?)
  • 其他任何内容

任何提示都会对我有所帮助。 感谢。

修改

不幸的是,我使用GCM进行了测试,但它只是在短时间内唤醒了我的应用程序。这意味着我必须尽可能多地发送GCM以保持清醒。我认为我不能使用它。

1 个答案:

答案 0 :(得分:0)

  

许多文章告诉我,如果我的应用程序位于白名单中,即使在打盹模式下我也可以使用网络。但在我测试了Doze模式后,它似乎并不正确。我是对的吗?

你不对。当你的应用程序在白名单上时,打瞌睡的限制之一是打瞌睡时使用网络的能力。

  

白名单中的应用可以在Doze和App Standby期间使用网络并保留部分唤醒锁定。但是,其他限制仍然适用于列入白名单的应用,就像对其他应用一样。例如,白名单应用的作业和同步是延迟的(在API级别23及以下),并且其常规的AlarmManager警报不会触发。

来自here

换句话说:如果你在白名单上,你应该可以在打瞌睡中使用网络。

  

我可以采取哪些最佳方法让我的应用正常运作?

考虑到您的应用程序是一个运行状况监视器,因此应该能够持续或至少非常有效地执行其工作,您可以将该功能放在前台服务中。打瞌睡不影响前台服务。

你应该知道你应该有充分的理由使用前台服务,因为用户知道它们,但我认为你有一个健康监测等。

  

注意:您应该只将前台服务用于用户希望系统立即执行或不中断的任务。这种情况包括将照片上传到社交媒体,或者即使在音乐播放器应用程序不在前台时播放音乐。您不应该仅仅为了阻止系统确定您的应用程序处于空闲状态而启动前台服务。

来自here