1. 定义
一套Android消息传递机制
Handler作用流程图.png
2. 基本原理
2.1 相关概念
Handler相关概念图.png2.2 工作流程
- 异步通讯准备
- 消息发送
- 消息循环
-
消息处理
Handler工作流程概述图.png
Handler工作流程图.png
Handler工作流程示意图.png
2.3 Thread、Looper和Handler三者的对应关系
线程、循环器和处理者关系图.png3. 基本使用
3.1 在接收消息的页面创建Handler
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//接收消息并处理
Log.i("Handler", "----------" + msg.what);
}
};//未处理内存泄漏问题
3.2 发消息
new Thread(new Runnable() {
@Override
public void run() {
handler.sendEmptyMessage(99);//发消息
}
}).start();
3.3 内存泄漏解决方案
/**
* 使用弱引用的方式创建静态内部类
*/
private static class MyHandler extends Handler {
private final WeakReference<Activity> mActivity;
private MyHandler(Activity activity) {
this.mActivity = new WeakReference<>(activity);
}
@Override
public void handleMessage(Message msg) {
Activity activity = mActivity.get();
super.handleMessage(msg);
if (activity != null) {
Log.i("Handler", "----------" + msg.what);
}
}
}
4. 源码分析
参考网站
https://blog.csdn.net/carson_ho/article/details/80175876
https://blog.csdn.net/iispring/article/details/47115879
https://blog.csdn.net/javazejian/article/details/50839443
网友评论