2

我制作了一个在睡眠时间监测人的健康状况的设备,它通过 BLE 连接到智能手机。

它与 iOS 应用程序配合得很好。但自从打瞌睡模式出现在 Android 世界。这真的很难处理,因为我的设备在他的睡眠时间工作。

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

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

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

adb shell dumpsys 设备空闲

使我的应用程序正常运行的最佳方法是什么?

  • 前台服务
  • 带有 SetExactAndAllowWhileIdle 的警报管理器。
  • GCM(这意味着推送,对吗?)
  • 还要别的吗

任何提示都会帮助我。谢谢。

编辑

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

4

1 回答 1

0

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

你看起来不太对劲。当您的应用程序在白名单上时,打瞌睡的限制之一是在打盹处于活动状态时使用网络的能力。

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

这里

换句话说:如果您在白名单上,您应该能够打瞌睡。

使我的应用程序正常运行的最佳方法是什么?

考虑到您的应用程序是一个健康监视器,因此应该能够持续或至少非常定期地完成其工作,您可以将该功能放在前台服务中。前台服务不受打瞌睡的影响。

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

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

这里

于 2017-05-23T08:42:42.323 回答