2012-03-04 49 views
2

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

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

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

回答

1

对我来说这似乎不是一个好主意,因为AsyncTask对象通常具有有限的使用期限。他们完成他们的任务,然后他们离开。当这种情况发生时谁会听你的传感器?一个Service似乎是你想要做的更好的选择。

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); 
相关问题