美文网首页
Android线程间通讯的方式--Handler

Android线程间通讯的方式--Handler

作者: CrazySnow | 来源:发表于2023-04-24 09:04 被阅读0次

Handler是Android的消息传递机制,主要用于线程间通讯

子线程往主线程通信的流程:在主线程中创建了一个子线程,子线程运行并生成Message,通过调用sendmessgae方法传递给handler
示例代码:

    private Handler handler = new Handler(Looper.myLooper()){
        @Override
        public void handleMessage(@NonNull Message msg) {
            super.handleMessage(msg);
            if (msg.what == 0){
                String strData = (String) msg.obj;
                tvContent.setText(strData);
                parseJsonData(strData);
                //数据解析

            }
        }
    };

   public void start(View view){
        new Thread(new Runnable() {
            @Override
            public void run() {
                String stringData = getStringFromNet();
                Message message = new Message();
                message.what = 0;
                message.obj = stringData;
                handler.sendMessage(message);

            }
        }).start();
    }

消息机制的架构

  • 在子线程完成耗时操作,当Handler发送消息时,将会调用MessageQueue.enqueueMessage,向消息队列中添加消息
  • 当通过Looper.loop开启循环后,会不断地从线程池中读取消息,即调用MessageQueue.next
  • 然后调用目标Handler的dispatchMessage方法传递消息,然后回到到Handler所在线程,目标Handler收到消息,调用handleMessage方法,接收消息,处理业务逻辑

相关文章

网友评论

      本文标题:Android线程间通讯的方式--Handler

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