Handler处理消息的过程如下:
首先,检查Message的callback是否为null,不为null就通过handleCallback来处理消息。Message的callback是一个Runnable对象,实际上就是Handler的post方法所传递的Runnable参数。handleCallback的逻辑也是很简单,如下:
private static void handleCallback(Message message) {
message.callback.run();
}
其次,检查mCallback是否为null,不为null就调用mCallback的handleMessage方法来处理消息。Callback是个接口,它的定义如下:
image.pngHandler还有一个特殊的构造方法,可以指定一个特殊的Looper来构造Handler。
image.pngHandler创建需要Looper,否则会抛出异常,默认获取当前线程的Looper。主线程也就是ActivityThread会自动创建Looper,其他线程如果需要Looper均需要手动创建。
主线程不用手动创建,因为已经自动创建Looper了
网友评论