mTimerTask = new TimerTask1(); // 錯誤:TimerTask1 非標準類別
編譯錯誤:Cannot resolve symbol 'TimerTask1'
mTimerTask = new TimerTask() {
@Override
public void run() {
// 定時任務邏輯
runOnUiThread(() -> {
// 更新 UI
});
}
};
// 排程執行
Timer timer = new Timer();
timer.schedule(mTimerTask, 0, 1000); // 延遲 0ms,每 1000ms 執行一次
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
// 邏輯
}
}, 0, 1000);
注意:TimerTask 為抽象類,無法直接實例化,必須繼承並實作 run()。
Handler handler = new Handler(Looper.getMainLooper());
Runnable task = new Runnable() {
@Override
public void run() {
// UI 邏輯
handler.postDelayed(this, 1000);
}
};
handler.post(task); // 啟動
// 停止
handler.removeCallbacks(task);
runOnUiThread。Activity/Fragment,onDestroy 移除回調防洩漏。lifecycleScope.launch {
while (isActive) {
// 邏輯
delay(1000)
}
}
TimerTask1 不存在,應為 new TimerTask() { ... }。Handler 或 Kotlin 協程,避免 Timer 執行緒池洩漏與 UI 執行緒切換煩瑣。Timer,記得 timer.cancel() 清理資源。修正匿名內部類語法錯誤,並升級至現代 Android 非同步編程模式,讓定時任務更安全、更簡潔。