我的问题是,单击停止按钮后文件为空,但仅在时间更改时才当我在16:49:39点击开始按钮然后在16:49:57停止按钮然后文件为空。但是当我点击停止按钮16:50:01然后文件保存数据。请告诉我为什么会发生这种情况?以及如何解决这个问题。您可以在下面看到我的应用程序中的代码:
OnClick代码:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.startButton:
stoper.start();
try {
writer = new CSVwriter(dateFormat.format(date));
} catch (IOException e) {
e.printStackTrace();
}
handler.postDelayed(UpdateView, 120);
break;
case R.id.stopButton:
stoper.stop();
try {
writer.closeFile();
} catch (IOException e) {
e.printStackTrace();
}
break;
}
}
private Runnable UpdateView = new Runnable() {
public void run() {
timerText.setText(stoper.toString());
pulsText.setText(""+accelerationX);
try {
writer.insertLine(new DataObject(stoper.toString(), accelerationX, accelerationY, accelerationZ));
} catch (IOException e) {
e.printStackTrace();
}
handler.postDelayed(UpdateView, 100);
}
};
OnCreate代码:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
View startBtn = findViewById(R.id.startButton);
startBtn.setOnClickListener(this);
View stopBtn = findViewById(R.id.stopButton);
stopBtn.setOnClickListener(this);
handler = new Handler();
}
答案 0 :(得分:1)
如果编写器有flush()方法,您是否尝试过手动调用flush()? (大多数文件编写类都应该有flush()方法,除非CSVwriter是你自己的类。)
手动冲洗流可能有所帮助。
编辑:作为旁注,stoper.stop()是否会抛出错误?如果它确实将它移动到finally块中的文件关闭之后,以确保在刷新和关闭文件后始终调用它。