我希望我的应用程序在后台运行,并在文件中写入一个值。我有按下后退按钮的代码,但是它错过了几个要写入文件的值。我在MainActivity的OnCreate()方法中有以下代码。
mHandler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
// sensorManager.registerListener(MainActivity.this, accel,
// SensorManager.SENSOR_DELAY_FASTEST);
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
// sensorManager.unregisterListener(MainActivity.this);
firstValueInInterval=true;
mHandler.postDelayed(runnable,1000);
}
},500);
}
};
然后,我在每次调用onSensorChanged()时编写值。
x = event.values[0];
y = event.values[1];
z = event.values[2];
AccelData data = new AccelData(currentTime, x, y, z);
sensorData.add(data);
fs.writeToFile(sensorData);
sensorData = new ArrayList<AccelData>();
以及下面的代码是后退按钮onResume和onPause()的代码。
public void onBackPressed() {
moveTaskToBack(true);
}
@Override
protected void onResume() {
super.onResume();
mHandler.postDelayed(runnable,500);
}
@Override
protected void onPause() {
super.onPause();
mHandler.postDelayed(runnable,500);
//sensorManager.unregisterListener(this);
}
我希望该应用程序运行24 * 7并写入数据。
答案 0 :(得分:0)
不确定我是否能收到您的代码,我不熟悉Android编程,但是我将尝试通过建议其他方法来回答。 难道您不能在某个背景线程中执行这些操作吗?这样,您不必每次都创建一个新的可运行对象。
还要注意,根据采样率,您会产生大量数据。这将非常耗能,并且会产生很大的文件。