代碼:handler.sendEmptyMessageAtTime(5, 5000) 期望 5 秒後執行,但立即執行。
sendEmptyMessageAtTime(int what, long uptimeMillis):在**系統開機後** uptimeMillis 時刻執行。sendEmptyMessageDelayed(int what, long delayMillis):在**當前時間** delayMillis 毫秒後執行。手機開機後經過時間通常遠大於 5000 毫秒(5 秒),所以 uptimeMillis=5000 早已過去,系統判定為「已逾期」→ 立即投遞。
// 延遲 5 秒
handler.sendEmptyMessageDelayed(5, 5000);
// 或
handler.postDelayed(() -> { /* 任務 */ }, 5000);
AtTime:鬧鐘、定時任務(需配合 SystemClock.uptimeMillis() 計算絕對時間)。Delayed:延遲執行、定時輪詢、動畫幀。記住:**AtTime = 絕對時間(開機起),Delayed = 相對時間(當下起)**。