1

This is my function.

 public void onSensorChanged(SensorEvent event)
    {

            if (event.sensor.getType() == Sensor.TYPE_LINEAR_ACCELERATION)
            {
               //DO A JOB...
            }
     }      

My question is what happens if onSensorChanged() is called while it is finishing the current job?

4

1 回答 1

1

如果在处理前一个样本时再次调用 onSensorChanged,则 onSensorChanged 将同时处理两个样本,这对于计算的最终结果发生的任何事情都可能是一个问题。我相信它只是传递传感器事件的一个线程,但实际上在处理完成之前不应再次调用它。

一般来说,所有处理都应该在另一个线程中完成,并且 onSensorChanged 应该尽快返回,以便其他接收者也可以对数据采取行动。同时复制数据,不要传递对传感器数据的引用,因为 SensorData 对象可能会被重复使用,并且如果您在数据周围保留引用,则在您使用它时可能会发生变化。

于 2012-10-14T13:53:51.373 回答