這是行不通的。
由於您創建的新線程不是UI線程,因此無法更新該線程上的UI(設置文本視圖的文本)。
更好的方法是使用android.os.Handler
類。它有一個postDelayed
方法將延遲執行Runnable
。 Here是文檔。
或者,您也可以使用這個Timer
類我寫的,它封裝了一個Handler
實例,有一個簡單的界面:
import android.os.Handler;
public class Timer {
private Handler handler;
private boolean paused;
private int interval;
private Runnable task = new Runnable() {
@Override
public void run() {
if (!paused) {
runnable.run();
Timer.this.handler.postDelayed (this, interval);
}
}
};
private Runnable runnable;
public int getInterval() {
return interval;
}
public void setInterval(int interval) {
this.interval = interval;
}
public void startTimer() {
paused = false;
handler.postDelayed (task, interval);
}
public void stopTimer() {
paused = true;
}
public Timer (Runnable runnable, int interval, boolean started) {
handler = new Handler();
this.runnable = runnable;
this.interval = interval;
if (started)
startTimer();
}
}
Gist
你可能會使用這樣的:
Runnable run = new Runnable() {
public void run() {
textwel.setText("Welcome");
}
};
Timer timer = new Timer(run, 4000, true);
PS每4秒將textview的文本設置爲「歡迎」是毫無意義的。
那是一個不錯的辦法的人。因爲它會產生一個空指針異常,當視圖被破壞時,後臺線程已經調用視圖已經很晚了。 – Enzokie
爲此使用處理程序。 – Enzokie