Handler概念辨析
Handler 概念辨析
Handler 不是 Java SE 中唯一确定的核心类型。阅读代码时必须先看完整包名,因为不同框架中的含义完全不同。
Android Handler
android.os.Handler 用于向某个线程的 Looper 和 MessageQueue 投递消息或任务。
代码块收起展开
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 表示请求或事件处理器,但其接口和生命周期由具体框架定义。
阅读原则
- 先确认
import或完整类名。 - 再确认 Handler 所属线程、生命周期和调用入口。
- 不要把 Android 消息处理、日志输出和 Web 请求处理混为同一套机制。