- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在开发一个适用于健身(运行)的 iOS (7.0+) 应用程序,它使用用户的 GPS 位置、进行小型计算并将数据传输到低功耗蓝牙 (4.0) watch 。这个过程需要在后台进行,即使用户锁定了他们的 iOS 设备。
我还实现了以下后台模式:
App communicates using CoreBluetooth
App registers for location updates
我已经成功地让一切正常工作,除了在设备锁定一定时间后(例如 2 小时),iOS 设备停止更新位置,因为我可以看到它不是不再向蓝牙 watch 发送更新的 GPS 值。然后我必须解锁设备,重新打开应用程序,定位服务再次正常工作。
有谁知道如何让定位服务一直在后台运行(设备锁定),而不会在一定时间后突然停止位置更新?如果可能,最好采用一种有效的解决方案,该解决方案不会比使用 GPS 正常情况下消耗太多电池电量。
最佳答案
最重要的是:确保在启动 CLLocationManager
之前将 pausesLocationUpdatesAutomatically
设置为 NO
(参见 docs)。
为了最大限度地减少电池使用,您还应该使用延迟位置更新 (more details on SO)。这允许 CPU 在 GPS 芯片为您收集位置更新时休眠并节省电池电量。它定期将它们转储到 CPU。如果您需要每秒更新一次 watch ,这可能不适合您,但如果您可以每 10、20 或 30 秒更新一次,它将节省那么多 CPU 唤醒。
关于ios - CoreLocation 在一定时间后停止在后台工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25393725/
我正在尝试开发右边框/Angular 具有特定 Angular (30°) 的表格。我见过一些类似的解决方案,但它们都无法在一定程度上发挥作用。如果我想从 30° 改变到 20°,我不想花太多力气。
我是一名优秀的程序员,十分优秀!