2

我正在做一个结合了加速度计和陀螺仪使用的项目。

在我正在开发的特定应用程序中,我会在需要时打开(例如.startGyroUpdatesToQueue)加速度计和陀螺仪,在不需要时关闭(例如.stopGyroUpdates()),类似于 Apple 的文档建议。

但是,我注意到在用户不时注意到的情况下,将加速度计和陀螺仪重新打开时可能会有轻微的延迟。因此,首选是保持加速度计和陀螺仪始终开启,以便用户获得不间断的体验。

问题:

1 - 在应用程序中启用加速度计和陀螺仪对系统性能和电池使用的效率如何?

2 - 当加速度计和陀螺仪打开时,是否有系统性能和电池使用的证据/数据?

3 - 有没有办法暂停加速度计和陀螺仪而不是完全关闭它?

4

1 回答 1

2

首先回答第 3 个问题,在现代 iPhone(5S 及更高版本)上,加速度计从未真正关闭,而是驻留在一个特殊的运动协处理器中。在这些设备上,创建数据的能源成本是恒定的,但获取数据的成本很高。它需要一个定时器来例行地唤醒主处理器、读取数据、唤醒你的应用程序并在你的一个线程上执行一个事件。与您所要求的最接近的是一种打开计时器但不将其馈入您的应用程序的方法。似乎没有办法做到这一点,如果有的话,节能可能不会那么好。

考虑到这一点,1 将是相当主观的。处理器和您的应用程序都将花费更多时间运行,但如果您已经在 CPU 上工作,它会增加那么多吗?同样,如果用户只将 5% 的时间花在不需要加速度计的屏幕上,而不是花 50% 的时间,那么持续打开它对整体能量的影响会小得多。这真的把我们带到了问题的核心,第 2 点。

如果您想了解不断轮询加速度计与仅在需要时打开加速度计相关的能源成本,您应该分析您的应用程序。在调试您的应用程序时,您可以使用 Debug Navigator (⌘</kbd>6). This is explained in Apple's Energy Efficiency Guide of iOS Apps: Measure Energy Impact with Xcode. You can also get a more detailed analysis with Instruments. Apple provides full details in their Energy Efficiency Guide of iOS Apps: Measure Energy Impact with Instruments.

使用上述工具,您应该能够了解需要多少能量才能使您的加速度计始终处于开启状态,并能够就该做什么做出合理的决定。

于 2016-04-27T18:46:36.440 回答