Java 带加速计的异步任务-重复条目
我正在尝试使用Java 带加速计的异步任务-重复条目,java,android-asynctask,accelerometer,wear-os,Java,Android Asynctask,Accelerometer,Wear Os,我正在尝试使用AsyncTask将Android Wear的加速度计结果记录到一个文件中。然而,在我的AsyncTask-AccelerometerReventLoggerTask实例中,读数似乎重复,我不知道为什么 我有一个定义如下的WearableService.java类,它扩展了服务,并实现了一个抽象的SensorEventListener: public class WearableService extends Service implements SensorEventListen
AsyncTask
将Android Wear的加速度计结果记录到一个文件中。然而,在我的AsyncTask
-AccelerometerReventLoggerTask
实例中,读数似乎重复,我不知道为什么
我有一个定义如下的WearableService.java
类,它扩展了服务
,并实现了一个抽象的SensorEventListener
:
public class WearableService extends Service implements SensorEventListener {
...
@Override
public void onCreate() {
super.onCreate();
senSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
//get accelerometer
senAccelerometer = senSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
// register listener
senSensorManager.registerListener(this, senAccelerometer, SensorManager.SENSOR_DELAY_FASTEST);
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
new AccelerometerEventLoggerTask().executeOnExecutor(SERIAL_EXECUTOR, event);
}
}
...
}
由此创建了一个AsyncTask
,用于写入文件(目前,它执行一个简单的日志):
私有类AccelerometerReventLoggerTask扩展了AsyncTask{
@凌驾
受保护的无效doInBackground(传感器事件…事件){
SensorEvent=事件[0];
Log.d(标记“+event.values[0]+”;“+event.values[1]+”;“+event.values[2]);
}
}
但是,当程序正常运行时,我会得到重复的条目(断点不是这种情况)。这是一个示例日志:
为什么会这样?有趣的是,当我在sensorchange中运行相同的Log.d
行时,没有重复。因此,在AsyncTask
实现AccelerometerReventLoggerTask
中发生了一些奇怪的事情
如果有人能对这个问题有所了解,或者知道原因,我将不胜感激。谢谢。查看此问题和答案:谢谢!这可能很有用。:)可能重复的
private class AccelerometerEventLoggerTask extends AsyncTask<SensorEvent, Void, Void> {
@Override
protected Void doInBackground(SensorEvent... events) {
SensorEvent event = events[0];
Log.d(TAG, "" + event.values[0] + "; " + event.values[1] + "; " + event.values[2]);
}
}