是否可以使用AsyncTask收集传感器数据?

时间:2012-03-04 09:00:26

标签: android

假设我试图以高速率从传感器收集数据,并将其写入文件。通过“开始”和“停止”按钮从UI控制集合。写这样的课是否有意义:

protected class DataLogger extends AsyncTask<Void, Void, Void> implements SensorEventListener

我应该直接使用线程吗?根据经验,我发现使用这样的AsyncTask会锁定我的UI,但我无法完全理解为什么。

2 个答案:

答案 0 :(得分:1)

对我来说这似乎不是一个好主意,因为AsyncTask对象通常具有有限的寿命。他们完成任务然后就会消失。当发生这种情况时,谁会听你的传感器? Service似乎是您正在尝试做的更好的选择。

答案 1 :(得分:1)

BlackRider似乎非常正确。事实证明,收集传感器数据的更好方法如下:

Sensor Manager mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mHandlerThread = new HandlerThread("sensorThread");
mHandlerThread.start();
handler = new Handler(mHandlerThread.getLooper());
mSensorManager.registerListener(this,
                mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_FASTEST, handler);