c# - MonoTouch - 带有 MotionManager 的加速度计停止发送更新

标签 c# ios xamarin.ios core-motion

我正在尝试将加速度计与 Monotouch 一起使用,但 MotionManager 出现问题。 2-3 秒后停止发送更新。

这是代码。 (一切都在我的主要 UIView 的构造函数中创建)。

CMMotionManager motionManager = new CMMotionManager();
motionManager.AccelerometerUpdateInterval = 0.5;
motionManager
    .StartAccelerometerUpdates(NSOperationQueue.CurrentQueue, 
        delegate(CMAccelerometerData data, NSError error) 
{
    myLabel.Text = data.Acceleration.X.ToString("0.0000");        
});

使用 UIAccelerometer,它可以正常工作:

UIAccelerometer acc = UIAccelerometer.SharedAccelerometer;
acc.UpdateInterval = 0.5;
acc.Acceleration += delegate(object sender, UIAccelerometerEventArgs e) 
{
    myLabel.Text = e.Acceleration.X.ToString("0.0000"); 
};

有什么想法吗?

最佳答案

没有足够的源代码来查看您是否保留对 CMMotionManager 实例的引用。否则 GC 可以处理它,这将停止任何更新。

相比之下,您在创建自己的 CMMotionManager 时使用的是 shared UIAccelerometer(永远不会被 GC) >(可能是)。

关于c# - MonoTouch - 带有 MotionManager 的加速度计停止发送更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14567187/

相关文章:

ios - 关于UIScrollView的一些问题

powershell - 在安装在 Mac 上的 VSTS 代理中运行 powershell 构建步骤?

xamarin - 在 Xamarin.IOS 中执行 native 代码时收到 SIGSEGV

ios - 条形按钮项目图像(UIImage)颜色随色调变化?

c# - 部署后NServiceBus反序列化异常

c# - 将 Windows 窗体表单的元素重置为初始化状态 (C#/.NET)

ios - VIPER架构: tab bar controller

c# - 我如何连接两个具有相同基类的不同列表<T>?

c# - 集合的隐式转换

ios - 更新 CoreDataStack 时如何使用相同的数据库