Handler基本使用

来源:互联网 发布:阿里云客服考试好考吗 编辑:程序博客网 时间:2024/06/17 00:13

Handler

  1. 基本概念
    Handler:接收子线程发送的数据,并用此数据配合主线程更新UI。(子线程与主线程通信的工具)
    Handler定义在主线程中(UI线程中);
    Handler充当主线程和子线程之间交互的中介:
    Handler在新启动的子线程中发送消息;
    这里写图片描述
  2. 主要方法
    这里写图片描述

    post(Runnable)postAtTime(Runnable,long)sendEmptyMessage(int)sendMessageAtTime(Message,long)

    以上post类方法允许你排列一个Runnable对象到主线程队列中,
    sendMessage类方法, 允许你安排一个带数据的Message对象到队列中,等待更新.

  3. 基本流程
    创建Handle
 Handler mhandler = new Handler(){        public void handleMessage(Message msg)         {            switch (msg.what){            //case后必须跟常量,即为final的            case CURRENT_MSG:                t.setText("ggg");                break;            }        };    };

创建Thread对象

Thread mThread = new Thread(){        public void run()         {            Message msg= mhandler.obtainMessage();            msg.what=CURRENT_MSG;            mhandler.sendMessage(msg);        };    };

启动thread
mThread.start();

//只能放int型数据            mhandler.sendEmptyMessage(CURRENT_MSG);            //允许处理Message对象            mhandler.sendMessage(msg);

不用创建线程只是想延迟执行

Message msg = handler.obtainMessage();msg.arg1 = childIndex;handler.sendMessageDelayed(msg, delay);

避免恶意操作,将不够延迟时间的操作移除,避免程序内部操作次数

避免恶意操作延迟执行,只执行最后一次的操作:class x implements Runnable {        private  boolean enable ;        public x(boolean enable) {            this.enable = enable;        }        public void run() {            //要延时的操作        }    }X ref;final boolean isEnable = enabled;mHandler.removeCallbacks(ref);//移除上次的操作ref = new x(isEnable);mHandler.postDelayed(ref, 1000);    //延时执行
这里写代码片

网上一个很不错的帖子
(http://www.itzhai.com/android-the-role-and-use-of-handler.html#read-more)

0 0
原创粉丝点击