Handler概念辨析

Handler 概念辨析

Handler 不是 Java SE 中唯一确定的核心类型。阅读代码时必须先看完整包名,因为不同框架中的含义完全不同。

Android Handler

android.os.Handler 用于向某个线程的 LooperMessageQueue 投递消息或任务。

代码块JAVA · 2 行收起展开
Handler handler = new Handler(Looper.getMainLooper());
handler.post(() -> textView.setText("done"));

post() 不会自动创建新线程,而是把任务放进目标线程的消息队列。主线程 Handler 只应处理短任务;长计算和阻塞 I/O 会造成界面卡顿。

使用延迟任务时,应注意页面销毁后的回调清理,避免持有 Activity、View 等对象造成生命周期问题。

Java Logging Handler

java.util.logging.Handler 负责接收 LogRecord 并输出到目标位置。常见实现包括:

  • ConsoleHandler:输出到控制台。
  • FileHandler:输出到文件。
  • 自定义 Handler:发送到网络、监控系统或其他存储。

Web 框架中的 Handler

Spring MVC、Netty 等框架也使用 Handler 表示请求或事件处理器,但其接口和生命周期由具体框架定义。

阅读原则

  1. 先确认 import 或完整类名。
  2. 再确认 Handler 所属线程、生命周期和调用入口。
  3. 不要把 Android 消息处理、日志输出和 Web 请求处理混为同一套机制。

延伸阅读