在 Android 中,异步消息处理机制主要通过 Handler
、Looper
和 MessageQueue
三个类实现。这些类共同工作,以便在主线程和其他线程之间传递消息和任务。以下是对这三个类的源码解析,帮助您理解它们的工作原理和相互关系。
1. Handler
Handler
是用于发送和处理消息的类。它可以将消息发送到与其关联的 Looper
的消息队列中。
1.1 Handler 的基本用法
public class MyHandler extends Handler {
@Override
public void handleMessage(Message msg) {
// 处理消息
}
}
// 创建 Handler
MyHandler handler = new MyHandler();
Message message = handler.obtainMessage();
handler.sendMessage(message);
1.2 Handler 源码分析
Handler
的构造函数通常会传入一个 Looper
对象,默认情况下,Handler
会使用当前线程的 Looper
。
public Handler(Looper looper) {
mLooper = looper;
mQueue = looper.mQueue;
}
sendMessage
方法将消息添加到消息队列中: