首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android Handler sendEmptyMessageAtTime vs sendEmptyMessageDelayed 差異

     編輯:程式設計疑難解答

代碼: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 = 相對時間(當下起)**。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved