TimerTask 執行於背景執行緒,不能直接操作 UI 元件。需呼叫 Activity.runOnUiThread 將更新動作派發至主執行緒。
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
counter++;
runOnUiThread(() -> textView.setText(String.valueOf(counter)));
}
}, 100, 100); // 100ms 延遲,100ms 間隔
Handler handler = new Handler(Looper.getMainLooper());
Runnable runnable = new Runnable() {
@Override public void run() {
counter++;
textView.setText(String.valueOf(counter));
handler.postDelayed(this, 100);
}
};
handler.post(runnable);
handler.removeCallbacks(runnable))。Timer 適合精確週期性任務,但需手動處理執行緒切換。