-1

我的问题是单击停止按钮后文件为空,但仅当时间更改时,例如,当我在 16:49:39 单击开始按钮,然后在 16:49:57 单击停止按钮时,文件为空。但是当我点击停止按钮 16:50:01 然后文件保存数据。请告诉我为什么会发生这种情况?以及如何解决这个问题。您可以在下面看到我的应用程序中的代码:

点击代码:

   @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();


    }
4

1 回答 1

1

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

手动刷新流可能会有所帮助。

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

于 2012-04-06T14:30:17.713 回答