首页 > 其他 > 详细

Handler发送消息

时间:2016-04-09 20:11:24      阅读:196      评论:0      收藏:0      [点我收藏+]

Handler发送消息小结

字数283 阅读210 评论0
  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发送消息

原文:http://www.cnblogs.com/wangying222/p/5372343.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!