美文网首页
Android Handler handleMessage()与

Android Handler handleMessage()与

作者: hansduo | 来源:发表于2018-04-04 11:28 被阅读0次

    最近在温习Handler的时候,碰到了一个小坑。直接上代码~

    Handler callbackHandler = new Handler(new Handler.Callback() {
           @Override
           public boolean handleMessage(Message msg) {
               Log.e(TAG, "callbackHandler msg.what:" + msg.what);
               return false;
           }
       });
    
    Message msg = Message.obtain();
    msg.what = 50;
    callbackHandler.handleMessage(msg);
    

    结果发现怎么都收不到信息,handleMessage里的日志没有执行。

    后来发现handleMessage()和sendMessage()有细微区别。下面直接上代码~

         Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                Log.e(TAG, "handler msg.what:" + msg.what);
                super.handleMessage(msg);
            }
        };
    
        Handler handler1 = new Handler(new Handler.Callback() {
            @Override
            public boolean handleMessage(Message msg) {
                Log.e(TAG, "handler1 msg.what:" + msg.what);
                return false;
            }
        });
    
        private void send() {
            Log.e(TAG, "send");
    
            Message message = Message.obtain();
            message.what = 100;
            handler.sendMessage(message);
    
            Message message1 = Message.obtain();
            message1.what = 101;
            handler1.sendMessage(message1);
    
            Message message2 = Message.obtain();
            message2.what = 102;
            handler.handleMessage(message2);
    
            Message message3 = Message.obtain();
            message3.what = 103;
            handler1.handleMessage(message3);
    
        }
    

    然后打印日志如下:


    image.png

    由这个看来。当我们构造Handler传参为CallBack的时候,我们使用handler.handleMessage();来触发的时候,handler是没有处理的。只能使用sendMessage();的方式来发送。

    简单点,我们所有的地方都使用sendMessage();就能避免这个问题发生~

    如果该文章对您有所帮助,希望您可以点下喜欢~给作者一点鼓励!

    相关文章

      网友评论

          本文标题:Android Handler handleMessage()与

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