CMMotionManager 的多个实例,确定更新间隔

Posted

技术标签:

【中文标题】CMMotionManager 的多个实例,确定更新间隔【英文标题】:Multiple instances of CMMotionManager, determining update interval 【发布时间】:2016-12-07 19:22:31 【问题描述】:

根据 Apple 的 CMMotionManager 文档,“应用程序应仅创建 CMMotionManager 类的单个实例。此类的多个实例会影响从加速度计和陀螺仪接收数据的速率。”

我创建了一个单例来封装它,但我想知道我应该如何处理更新间隔。如果manager的每个consumer都需要对设备运动更新有不同的更新间隔,你如何处理呢?我最初的想法是将其设置为提供的最快更新间隔,并在用户被删除时回退到下一个最快的更新间隔(停止观察运动更新),但如果特定消费者需要设置某个间隔,这可能会导致问题。

有人遇到过这个问题吗?如果有,你是怎么解决的?

【问题讨论】:

【参考方案1】:

我过去曾在一个应用程序中使用过多个动作管理器,它不会显着影响应用程序的性能。但是,如果它影响实时应用程序行为/性能,我会将运动管理器设置为所需的最高频率,但会以消费者请求的速率将运动数据转发给消费者。

高频请求运动数据对cpu使用或电池没有明显影响,影响电池cpu/电池使用的是您在每次运动更新后进行的后处理量。

来源:个人经验,我一直在开发一个应用程序,该应用程序已投入生产 5 年,该应用程序使用设备运动数据预测用户行为。

【讨论】:

谢谢。这就是我最终的结果。我只是想知道如果特定的类需要特定的时间间隔才能正常运行,人们将如何处理它。 @stealthdyno 用碧昂丝的话说,“如果你喜欢它,那么你应该勾选它”

以上是关于CMMotionManager 的多个实例,确定更新间隔的主要内容,如果未能解决你的问题,请参考以下文章

CMMotionManager 的委托方法

CMMotionManager 是全局资源吗?这是啥意思?

CMMotionManager:设备校准在真实设备上不起作用

CMMotionManager 在 iOS 7 启动后返回偏航的大幅跳跃

Swift 3 CMMotionManager startGyroUpdates 不起作用

为任务选择仓库大小