Handlder

 Message        产品
 MessageQueue   仓库
 Looper         循环
 Handler        物流
 Handler.Callback  回调接口

主线程不能做耗时操作
子线程不能操作绝大多数UI控件
在子线程能做的事情尽量不要在主线程中去做。例如,int转为字符串。

  private TextView textView;
    private Handler handler = new Handler(new Handler.Callback() {
        @Override
        public boolean handleMessage(Message message) { //handler要怎么处理message
            switch (message.what) {
                case 0:
                    textView.setText((String) message.obj);
                    break;
            }
            return true;
        }
    });

方法1

 new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 100; i++) {
                 SystemClock.sleep(1000);//睡眠一秒
//                  Message message = new Message();  不推荐使用
                    Message message = Message.obtain();//obtain获得一个message对象,从一个池中,当message用过之后会被放到池中,直接拿来使用不需再创建
                    message.what = 0; //表示这个message 是做什么的
                    message.obj = String.valueOf(i);//obj 存放Object类型,arg1 ,arg2 存放int型,setData 存放Bundle 类型数据
//                  message.sendToTarget();  发送message
                    handler.sendMessage(message); //发送消息
                }
            }
        }).start();

方法2

Message message = Message.obtain();里的参数可以写handler,和what ,obj,arg1,arg2
如果有handler参数,则可以通过message.sendToTarget();发送消息。
效果跟上面相同

    Message message = Message.obtain(handler, 0, String.valueOf(i));
           message.sendToTarget();

方法3

handler.obtainMessage(0, String.valueOf(i)).sendToTarget();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值