当我为公司开发新冠肺炎接触者追踪应用程序时,我在后台遇到了 Android 扫描停止问题。这是我尝试过的:
- 添加前台服务
- 禁用手机中所有与电池相关的优化选项
- 启用后台运行的应用程序
- 测试设备:搭载 Android 10 的 Galaxy S20 和 Xperia,搭载 Android 8 的华为。
如果您不禁用这些电池优化设置和应用程序后台更新,则进入后台时扫描会立即停止。禁用这些设置后,扫描可能会运行大约几分钟(约 5 分钟),然后仍然停止。来自大卫的博客:http://www.davidgyoungtech.com/2017/08/07/beacon-detection-with-android-8 http://www.davidgyoungtech.com/2017/08/07/beacon-detection-with-android-8,似乎不可能在后台持续扫描,因为JobScheduler每15分钟就会重新启动一次,而每次扫描最多持续~10分钟。这是现实吗,还是我可以每 15 分钟循环扫描 10 分钟的最佳解决方案?
后台信标检测实施起来很棘手,因为许多小问题可能会让您陷入困境,而且具体问题因 Android 版本、Android 制造商甚至型号而异。虽然 Android 8+ 使用作业计划程序将后台范围限制为每 15 分钟一次,但如果添加前台服务,则可以解锁无限的后台范围。
一些提示:
-
首先关注 Galaxy S20,因为三星的行为有更好的记录并且更接近普通 Android。 (理想情况下,您应该首先在 Pixel 设备上进行测试。)只有当它在 Samsung 上运行后,才转向其他设备。
-
使用配置了内置前台服务的 Android Beacon 库参考应用程序,我发现 Galaxy S10 上的标准 iBeacon 或 AltBeacon 检测会在后台无限期地持续进行,即使扫描周期为 1.1 秒。看看是否可以复制相同的内容。
-
小心打瞌睡模式。如果由于手机在屏幕关闭且不充电的情况下一动不动而使 CPU 进入睡眠状态,您的检测将停止。您可以使用唤醒锁来击败打瞌睡模式,但这会对电池使用产生严重影响。您最好接受其局限性并在测试期间定期保持手机处于运行状态。如果您想获取日志以了解发生了什么,请使用 ADB 命令在通过 USB 连接时禁用充电,或学习通过 WiFi 使用 ADB。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)