2013-01-24 53 views
-2

可能重複:
how to update the textview variable for every 5 seconds如何更新爲每5秒while循環中的TextView不影響循環執行和主要活動

我有兩個任務同時做使用相同的數據文件。一個是讀取txt文件並將其繪製在chartview中。另一個任務是對繪圖數據進行計算。我的android應用程序佈局應該在chartview上方的textview中包含這些計算結果,並且它應該在圖表中動態地進行繪圖時不斷更新5秒。

我有第二個任務的問題 - 更新在while循環中運行的textview中的值。我用過Handler,Asynctask,Thread,Wait。它可以像java應用程序一樣完美工作。但它可以作爲一個android應用程序工作。我的應用程序要麼強制關閉,要麼在啓動前採取延遲(即)應用程序只有在給定延遲後纔會打開,並顯示while循環執行的最後一個值。我也在後臺做了這個,但是它影響了繪圖。

while(p[y1]!=0) 
{ 
    rr = ((p[y1]-p[y1-1])); 
    double x = rr/500; 
    HR = (int) (60/x);       
    final Handler handler=new Handler(); 
     handler.post(runnable); 
      final Runnable runnable=new Runnable() 
      { 
      @Override 
      public void run() 
      {      
        hr.setText(String.valueOf(HR)); 
       handler.postDelayed(runnable, 5000); 
      } 
      }; 

      y1++; 
      } 

我希望hr值每隔5秒更新一次,而不會影響圖表。任何人請求幫助。先謝謝您的幫助。

+0

android Java。它的一部分代碼是從txt文件中讀取的數據 – Pooja

+0

任何人都可以說更好的方法來做到這一點嗎?請..非常緊急 – Pooja

回答

0

你有沒有試過類似的東西,創建一個內部線程類,在它的run方法中做你所需要的。你也可以嘗試5秒的睡眠。確保你的while循環在run方法中。

我下面的代碼你有一個while循環內的線程,但你應該有一個thread.let中的循環。我知道如果你面對任何問題這樣做。

boolean isAlive = true; //change it to falst whenever u want to stop the thread 
class localT extends Thread { 

@Override 
public void run() { 
    while(isAlive) { 

     try { 
      sleep(5000); 

      textView.setText("yourChanging text"); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 
    super.run(); 
}; 

}

使用類似localThread.start(); ,殺死//停止此線程暫停,銷燬。

+0

看到我編輯的答案。 – AAnkit

+0

我想爲while循環檢查以及計算增加變量y1。所以,這個方法沒有增加它的選項。我應該以其他方式做嗎? – Pooja

+0

你可以在條件狀態下進行化妝。它只是一個虛擬的代碼,我已經寫了你的理解如何通過線程 – AAnkit