2012-04-04 138 views
0

猜測我有一個TextView,我想在某些情況下更新它。我想有一個線程,每隔一秒或兩秒檢查一下情況,並在必要時更新TextView的文本。 任何想法?Android:定期從線程更新UI

+3

線程可能是矯枉過正,除非有一些阻塞操作與它關聯。與'postDelayed(runnable,2000)'結合使用的Handler可能適合您的需求。 http://developer.android.com/reference/android/os/Handler.html – DeeV 2012-04-04 12:46:52

回答

2

您可以使用處理程序,在您的GUI:

Handler hnd = new Handler() { 
    public void handleMessage(Message msg) { 
     if (msg.what == 101) { 
      //update textview 
     } 
    } 
} 

通HND到你的線程,並在你的線程做:

Message m = new Message(); 
m.what = 101; 
hnd.sendMessage(m); 

這個假設在你的單獨線程中,你正在做一些需要向GUI線程報告的工作,你也可以發送短信

+0

答案中有一個重要的錯字:方法應該是handleMessage(沒有R)。我試着編輯你的答案,但他們拒絕了編輯。在這裏檢查http://developer.android.com/reference/android/os/Handler.html – fersarr 2014-04-22 19:18:06

+0

@fersarr thanx修復它 – marcinj 2014-04-23 16:57:54

1

您必須使用處理程序來更新另一個線程的視圖。隨着postDelayed你可以設置一個延遲。看到該文檔:

handler.postDelayed

3

我這樣做:

public class MyClass { 
    private Handler hUpdate; 
    private Runnable rUpdate; 

    public MyClass() { // Constructor 
    hUpdate = new Handler(); 
    rUpdate = new Runnable() { 
     // Do your GUI updates here 
    }; 

    Thread tUpdate = new Thread() { 
     public void run() { 
     while(true) { 
      hUpdate.post(rUpdate); 
      sleep(500); 
     } 
     } 
    } 
    tUpdate.start(); 
    } 
}