单击停止按钮时文件的内容为空

时间:2012-04-06 14:17:47

标签: java android

我的问题是,单击停止按钮后文件为空,但仅在时间更改时才当我在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();


    }

1 个答案:

答案 0 :(得分:1)

如果编写器有flush()方法,您是否尝试过手动调用flush()? (大多数文件编写类都应该有flush()方法,除非CSVwriter是你自己的类。)

手动冲洗流可能有所帮助。

编辑:作为旁注,stoper.stop()是否会抛出错误?如果它确实将它移动到finally块中的文件关闭之后,以确保在刷新和关闭文件后始终调用它。