Runnable和Thread如何工作

时间:2017-10-19 22:40:39

标签: java android sensor runnable thread-sleep

我显然误解了它们是如何工作的。我的代码:

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);
}

0 个答案:

没有答案