2012-04-06 12 views
-1

私の問題は、停止ボタンをクリックした後にファイルが空であることです。 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

デバッガで実行し、コードをステップ実行していることは何を発見しましたか? –

+0

私はコードをデバッグしようとしましたが、私はこの問題の原因に気づいていませんでした。 – erni

答えて

1

あなたは作家が(フラッシュを持っている場合は、手動)(フラッシュを呼び出してみましたが)方法? (ほとんどのファイル書き込みクラスには、CSVwriterが独自のクラスでない限り、flush()メソッドが必要です)。

ストリームを手動でフラッシュすると効果的です。

EDIT:副作用として、stoper.stop()はエラーをスローしますか? finallyブロックでファイルを閉じた後に移動すると、ファイルがフラッシュされて閉じられた後に必ず呼び出されます。

+0

CSVwriterは私のクラスであり、closeFileメソッドはflusch()を持っています – erni

+0

私はいくつかの調査を行い、問題は異なっているようです。私はタイマーを40秒間実行していますが、ファイルには24秒しか保存されていません。しかし、私はまだどこに問題があるのか​​分からない。私は、コードをデバッグしようとしましたが、私はこの問題の原因に気づいていません。 – erni

+0

私は何が間違っていたか把握しています。問題は私のCSVライタークラスでした。 closeFileでは、coduはこの順番でなければなりません:this.myFile.flush(); this.writer.close(); this.myFile.close(); – erni

関連する問題