2012-04-06 38 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

你發現在調試器中運行它並逐步完成代碼? – 2012-04-06 14:19:23

+0

我試圖調試代碼,但我沒有注意到導致此問題的任何事情。 – erni 2012-04-06 16:02:10

回答

1

您是否嘗試過手動調用flush()如果作家有一個沖洗()方法? (大多數文件寫入類應該有flush()方法,除非CSVwriter是您自己的類。)

手動刷新流可能會有所幫助。

編輯:作爲一個側面說明,stoper.stop()是否曾經拋出一個錯誤?如果它確實將它移動到finally塊中的文件關閉之後,以確保在文件被刷新並關閉後始終調用它。

+0

CSVwriter是我的類,closeFile方法中有flusch() – erni 2012-04-06 15:00:11

+0

我做了一些研究,看起來問題是不同的。我已經運行了40秒的計時器,並且在文件中僅保存了24秒。但我仍然不知道問題在哪裏。我試圖調試代碼,但我沒有注意到導致此問題的任何事情。 – erni 2012-04-06 16:02:43

+0

我弄清楚什麼是錯的。問題出在我的CSV作家類。在closeFile中,codu應該按以下順序:this.myFile.flush(); this.writer.close(); this.myFile.close(); – erni 2012-04-12 22:22:45

相關問題