美文网首页
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