我一直在开发一个需要分几个步骤执行加速度计校准的应用程序。
我所做的是创建一个 SensorEventListener 来获取一定数量的读数,在达到该数量后,我调用“sensorManager().unregisterListener(eventListener)”。
但是,我认为这一行并没有取消注册侦听器,因为紧接着,由于继续运行,同一行被调用。
问题:我是否以这种方式正确地做事,或者应该调节我的处理程序,以便在达到这种条件后它不允许自己运行(使用 if's)?
我一直在开发一个需要分几个步骤执行加速度计校准的应用程序。
我所做的是创建一个 SensorEventListener 来获取一定数量的读数,在达到该数量后,我调用“sensorManager().unregisterListener(eventListener)”。
但是,我认为这一行并没有取消注册侦听器,因为紧接着,由于继续运行,同一行被调用。
问题:我是否以这种方式正确地做事,或者应该调节我的处理程序,以便在达到这种条件后它不允许自己运行(使用 if's)?
如果您的 SensorEventListener 在您取消注册后只被调用一次,那么这种行为可能是由于Android 的多线程特性导致的竞争条件。因此,如果您想关闭对读数的处理,那么(如您所建议的)您应该设置一个布尔变量并使用 if 语句对其进行测试,以确保在达到限制后不再进行处理。