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

Java/Android 監聽器、接口、Handler 區別與使用場景詳解

     編輯:程式設計綜合問答

核心概念

1. Interface (接口)

定義一組方法契約,規範「能做什麼」。例如:

public interface OnPaintListener {
    void onPaintStarted();
    void onPaintFinished();
}

用於**解耦**:調用者不關心具體實現,只依賴接口。

2. Listener (監聽器)

是**接口的一種具體應用模式**,專門用於「事件發生時回調」。典型結構:

public class Button {
    private OnClickListener listener;
    public void setOnClickListener(OnClickListener l) { this.listener = l; }
    private void notifyClick() { if (listener != null) listener.onClick(this); }
}

Android 中 View.OnClickListener、TextWatcher 皆屬此類。

3. Handler (處理器)

Android 特有機制,**用於線程間通訊**,將任務(Message/Runnable)投遞到關聯線程的消息隊列。核心用途:

  • 子線程更新 UI(主線程)。
  • 延遲執行、定時任務。
  • 避免阻塞主線程。

對比總結

維度InterfaceListenerHandler
本質契約定義事件回調模式線程消息分發器
典型場景多態、插件化按鈕點擊、文字變化、滑動事件子線程→主線程、延遲任務
執行線程調用者線程事件觸發線程(通常主線程)目標線程(Looper 所在線程)

實戰建議

  • 定義回調介面時命名以 On...Listener 或 ...Callback 結尾。
  • 需跨線程更新 UI 時,優先用 Handler 或 runOnUiThread,不要在監聽器裡直接做耗時操作。
  • Kotlin 協程、RxJava、LiveData 是現代替代方案,逐步取代 Handler。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved