Handler整理

2018-10-26  本文已影响0人  AlanElric

1. 定义

一套Android消息传递机制


Handler作用流程图.png

2. 基本原理

2.1 相关概念

Handler相关概念图.png

2.2 工作流程

2.3 Thread、Looper和Handler三者的对应关系

线程、循环器和处理者关系图.png

3. 基本使用

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

上一篇下一篇

猜你喜欢

热点阅读