我显然误解了它们是如何工作的。我的代码:
private final Runnable processAccel = new Runnable() {
@Override
public void run() {
Log.d(TAG, "run: AccelStart");
registerAccel();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
mHandler.postDelayed(this, interval);
unregisterAccel();
}
};
在此Runnable期间,我希望在同一个班级中记录传感器事件。但是我没有数据。
如果我删除
unregisterAccel();
它始终记录数据,包括在runnable期间和未运行期间,以及在runnable期间它正在睡眠期间,但是一旦我在runnable结束时取消注册传感器监听器,我就会停止获取结果,即使我将Thread.sleep延长到10秒,这对我没有意义?
额外信息:
public void registerAccel(){
Log.d(TAG, "registerAccel: on");
sensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
}
public void unregisterAccel(){
Log.d(TAG, "unregisterAccel: off");
sensorManager.unregisterListener(this, mAccelerometer);
}