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

时间:2013-01-28 17:01:07

标签: 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"); 
};

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

相比之下,当您创建自己的UIAccelerometer(可能是)时,您正在使用共享 CMMotionManager(这将不会是GC)