我正在开展一个包含加速度计和陀螺仪使用的项目。
在我正在处理的特定应用程序中,我在需要时打开(例如.startGyroUpdatesToQueue
)加速计和陀螺仪,并在不需要时关闭(例如.stopGyroUpdates()
)类似于Apple的文档建议。 / p>
但是,我注意到,当用户不时注意到加速度计和陀螺仪时,可能会有轻微的延迟。因此,首选的是保持加速度计和陀螺仪始终处于打开状态,以便用户获得不间断的体验。
问题:
1 - 在应用程序中启用加速度计和陀螺仪时,系统性能和电池使用效率如何?
2 - 当加速度计和陀螺仪开启时,是否有系统性能和电池使用的证据/数据?
3 - 有没有办法暂停加速度计和陀螺仪而不是完全关闭它?
答案 0 :(得分:2)
首先在现代iPhone(5S及更高版本)the accelerometer is never really turned off and resides in a special motion coprocessor上回答3号。在这些设备上,创建数据的能源成本是不变的,但获取数据的成本很高。它需要一个定时器来定期唤醒主处理器,读取数据,唤醒应用程序并在其中一个线程上执行事件。与您提出的问题最接近的方法是让计时器开启但不会将其输入您的应用。似乎没有办法做到这一点,如果有的话,节能可能不会那么好。
考虑到这一点,1将是相当主观的。处理器和你的应用程序都将花费更多的时间来运行,但如果你已经在CPU上工作,它会增加那么多吗?同样,如果用户只将5%的时间花在您不需要加速度计的屏幕上而不是50%的时间内,那么持续使用加速度计的整体能量影响将会大大减少。这真的把我们带到了问题的核心,第2位。
如果您想查看与持续轮询加速度计相关的能源成本与仅在需要时将其打开相关联,您应该分析您的应用。调试应用程序时,您可以使用Debug Navigator(⌘ 6 )直接在Xcode中查看应用程序的CPU,能量和其他影响。这在Apple的Energy Efficiency Guide of iOS Apps: Measure Energy Impact with Xcode中有解释。您还可以使用Instruments进行更详细的分析。 Apple在Energy Efficiency Guide of iOS Apps: Measure Energy Impact with Instruments中提供了完整的详细信息。
使用上述工具,您应该能够感受到为保持加速度计始终处于开启状态所需的能量,并能够做出合理的决定。