我正在做一个包含加速度计和陀螺仪使用的项目。
在我正在处理的特定应用程序中,我打开(例如 .startGyroUpdatesToQueue
)加速度计和陀螺仪在需要时关闭(例如 .stopGyroUpdates()
),当不需要时类似于 Apple 的文档建议。
当将加速度计和陀螺仪重新打开时,可能会有轻微的延迟,用户会时不时地注意到这一点。因此,首选是保持加速度计和陀螺仪始终打开,以便用户获得不间断的体验。
问题:
1 - 在应用中启用加速度计和陀螺仪时,它们对系统性能和电池使用的效率如何?
2 - 加速度计和陀螺仪打开时是否有系统性能和电池使用情况的证据/数据?
3 - 有没有办法暂停加速度计和陀螺仪而不是完全关闭它?
首先回答数字 3,在现代 iPhone(5S 及更高版本)上,加速度计从未真正关闭,而是驻留在特殊的运动协处理器中。 在这些设备上,创建数据的能源成本是恒定的,但获取数据的成本很高。 它需要一个计时器来例行唤醒主处理器、读取数据、唤醒应用程序并在其中一个线程上执行事件。 最接近您要求的内容是找到一种方法来打开计时器,但不将其馈送到您的应用程序中。 似乎没有办法做到这一点,如果有的话,节能可能不会那么大。
考虑到这一点,1将是相当主观的。 处理器和你的应用程序都会花费更多的时间运行,但是如果你已经在CPU上工作,它会增加那么多吗? 同样,如果用户只在不需要加速度计的屏幕上花费 5% 的时间,而不是 50% 的时间,那么持续打开它对能源的总体影响就会小得多。 这确实把我们带到了问题的核心,即问题2。
如果想要查看与不断轮询加速计与仅在需要时打开加速度计相关的能源成本,则应分析应用。 调试 app 时,您可以使用调试导航器 (⌘6) 直接在 Xcode 中查看 App 的 CPU、能耗和其他影响。 这在 Apple 的 iOS 应用程序能效指南:使用 Xcode 衡量能源影响中进行了解释。 您还可以使用仪器获得更详细的分析。 Apple 在其 iOS Apps 能效指南:使用仪器衡量能源影响中提供了完整的详细信息。
使用上述工具,您应该能够了解保持加速度计始终开启需要多少能量,并能够就该怎么做做出合理的决定。