假设我试图以高速从传感器收集数据,并将其写入文件。通过“开始”和“停止”按钮从UI控制集合。写这样的班级是否有意义:是否可以使用AsyncTask收集传感器数据?
protected class DataLogger extends AsyncTask<Void, Void, Void> implements SensorEventListener
我应该直接使用线程吗?根据经验,我发现使用这样的AsyncTask
可以锁定我的用户界面,但我无法完全理解为什么。
假设我试图以高速从传感器收集数据,并将其写入文件。通过“开始”和“停止”按钮从UI控制集合。写这样的班级是否有意义:是否可以使用AsyncTask收集传感器数据?
protected class DataLogger extends AsyncTask<Void, Void, Void> implements SensorEventListener
我应该直接使用线程吗?根据经验,我发现使用这样的AsyncTask
可以锁定我的用户界面,但我无法完全理解为什么。
对我来说这似乎不是一个好主意,因为AsyncTask
对象通常具有有限的使用期限。他们完成他们的任务,然后他们离开。当这种情况发生时谁会听你的传感器?一个Service
似乎是你想要做的更好的选择。
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);