美文网首页
Handler整理

Handler整理

作者: AlanElric | 来源:发表于2018-10-26 17:48 被阅读0次

    1. 定义

    一套Android消息传递机制


    Handler作用流程图.png

    2. 基本原理

    2.1 相关概念

    Handler相关概念图.png

    2.2 工作流程

    • 异步通讯准备
    • 消息发送
    • 消息循环
    • 消息处理


      Handler工作流程概述图.png
      Handler工作流程图.png
      Handler工作流程示意图.png

    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

    相关文章

      网友评论

          本文标题:Handler整理

          本文链接:https://www.haomeiwen.com/subject/dezktqtx.html