Handler发送消息小结

作者: 陈利健 | 来源:发表于2015-02-06 11:04 被阅读3934次
  1. obtainMessage()得到一个Message对象。

创建一个Message然后发送是这么写的:

   Message msg = new Message();
    msg.arg1 = 1;
    msg.arg2 = 2;
    msg.what = 3;
    msg.obj = Object;
   handler.sendMessage(msg);

性能优化后这样写:

   Message msg = handler.obtainMessage();
    msg.arg1 = 1;
    msg.arg2 = 2;
    msg.what = 3;
    msg.obj = Object;
   handler.sendMessage(msg);

相当于:

   Message msg = handler.obtainMessage(int what,int arg1, int arg2, Object obj ) 
handler.sendMessage(msg);

再简练一点(这段代码在创建的Message中只传入两个参数,并让handler延迟10ms发送消息):

 handler.sendMessageDelayed(handler.obtainMessage(int what,Object obj), 10);

至于接受消息,肯定是在handleMessage(Message msg)中:

Handler handler = new Handler(){
    public void handleMessage(Message msg) {
    super.handleMessage(msg);
    //接收Message发送的消息  msg.what   msg.arg1  msg.arg2  msg.obj
    //这里msg.obj需要强转成你传过来的数据类型
    }           
};

给个实例看一看:

public boolean onTouch(View view, MotionEvent event){
    if(event.getAction() == MotionEvent.ACTION_UP) {
        handler.sendMessageDelayed(handler.obtainMessage(TOUCH_EVENT_ID,view), 10);
    }
    return false;
}

        Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                //msg.obj强转成View类型(传过来的obj是一个View类型的参数)
                View scroller = (View)msg.obj;
                if(msg.what==TOUCH_EVENT_ID) {
                    ......
                }
            }
        };

相关文章

  • Handler源码解析

    今天来分析一波handler的源码,先从发送消息开始 前面这部分是发送消息,作一个小结,当handler发送一个消...

  • Handler发送消息小结

    obtainMessage()得到一个Message对象。 创建一个Message然后发送是这么写的: 性能优化后...

  • Android消息机制解析

    Handler发送消息 Handler在消息机制中,起到发送和处理消息的作用。发送消息通过Handler.send...

  • Handler 解析

    Handler发送消息和消息处理 MessageQueue消息队列,存放handler发送的消息 Looper每个...

  • Handler原理

    Handler 原理 一、Handler消息发送机制 1. 发送消息 1.1 添加消息 调用Handler.sen...

  • 一定搞懂Handler消息处理机制系列之「01.Handler消

    一定搞懂Handler消息处理机制系列之「Handler消息发送」 Handler消息发送的方式有两种: Post...

  • Android-Handler发送消息

    Handler 发送消息 android中使用handler发送异步消息刷新UI是最基本的知识点,但如何优雅发送一...

  • 【Android 基础】Handler 使用

    Handler 使用 Handler (发送与接收消息)Looper (轮循)MessengeQueue 消息队列...

  • Handler消息发送

    1.payHandler.sendEmptyMessageDelayed(0,500); 是立即发送消息,但是Lo...

  • Handler源码记录

    一、Handler流程 Handler负责发送消息和处理消息,MessageQueue作为消息队列,Message...

网友评论

    本文标题:Handler发送消息小结

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