zoukankan      html  css  js  c++  java
  • Handler发送消息

    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) {
                        ......
                    }
                }
            };
  • 相关阅读:
    myeclipse源码相关操作
    来自一个程序员内心深处的心声
    编程乐趣--汉字转拼音
    MyEclipse下安装FreeMark插件
    java web 加载Spring --web.xml 篇
    注解方式实现声明式事务管理
    spring与struts简单整合案例
    创建对象与对象依赖关系
    几种对数据的处理以及对数据的封装
    Action开发、通配符、路径问题和struts中常量用法
  • 原文地址:https://www.cnblogs.com/wangying222/p/5372343.html
Copyright © 2011-2022 走看看