我制作了一个在睡眠时间监控人的健康状况的设备,它通过 BLE 连接到智能手机。
它与 iOS 应用程序配合得很好。
但自从 Android 世界出现 Doze 模式以来。
这真的很难处理,因为我的设备在他的睡眠时间工作。
主要功能是它可以检测特定的危险并在用户睡觉时通知该设备。当它发生时我需要网络连接。
许多文章告诉我,如果我的应用程序在白名单中,即使在打瞌睡模式下我也可以使用网络。但在我测试Doze模式后,情况似乎并非如此。
我对吗?
我可以确保当我触发时可以在列表中找到我的应用程序
adb shell dumpsys deviceidle
让我的应用程序正常工作可以采取的最佳方法是什么?
- 前台服务
- 使用 SetExactAndAllowWhileIdle 的警报管理器。
- GCM(这意味着推,对吧?)
- 还要别的吗
任何提示都会帮助我。
谢谢。
Edit
不幸的是,我使用 GCM 进行了测试,但它只能在短时间内唤醒我的应用程序。这意味着我必须发送尽可能多的 GCM 以使其保持清醒。我不认为我可以使用它。
许多文章告诉我,如果我的应用程序在白名单中,即使在打瞌睡模式下我也可以使用网络。但在我测试Doze模式后,情况似乎并非如此。我对吗?
你看起来不太对劲。当您的应用程序位于白名单中时,解除打瞌睡的限制之一是在打瞌睡活动时使用网络的能力。
列入白名单的应用程序可以在打瞌睡和应用程序待机期间使用网络并保持部分唤醒锁定。但是,其他限制仍然适用于列入白名单的应用程序,就像对其他应用程序一样。例如,列入白名单的应用程序的作业和同步被推迟(在 API 级别 23 及以下),并且其常规 AlarmManager 警报不会触发。
From here https://developer.android.com/training/monitoring-device-state/doze-standby.html#support_for_other_use_cases.
换句话说:如果您在白名单上,您应该能够在打瞌睡时使用网络。
让我的应用程序正常工作可以采取的最佳方法是什么?
考虑到您的应用程序是一个运行状况监视器,因此应该能够持续或至少非常定期地完成其工作,您可以将该功能放在前台服务中。前台服务不受打瞌睡的影响。
您应该意识到,您应该有充分的理由使用前台服务,因为用户知道它们,但我认为您有一个具有健康监控等功能的服务。
注意:您应该仅将前台服务用于用户期望系统立即或不间断执行的任务。此类情况包括将照片上传到社交媒体,或者即使音乐播放器应用程序不在前台也播放音乐。您不应仅仅为了阻止系统确定您的应用程序处于空闲状态而启动前台服务。
From here https://developer.android.com/training/monitoring-device-state/doze-standby.html#understand_app_standby.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)