android 使用Handler

为什么要引入handler

在主线程中不能做耗时的操作(例如访问Interent,数据库的操作,大文件的拷贝等),这些需要放在子线程中来做,而在子线程中不能更新UI控件,这就产生了矛盾(4.0版本以后),基于以上android中引入了handler。( SurfaceView :多媒体视频播放 ,可以在子线程中更新UI; Progress(进度)相关的控件:也是可以在子线程中更新Ui;审计机制:activity完全显示的时候审计机制才会去检测子线程有没有更新Ui.)

Handler的机制原理

1.handler: 在子线程中用来发送message,在主线程中用来接收message,处理结果
2.Message:携带子线程中的数据
3.MessageQuery:在主线程中用来存放所有子线程发来的Message
4.Looper:消息循环器,一直循环遍历MessageQueue,从MessageQueue中取一个Message,派发给Handler处理。
图解

Handler的使用方法

[1].在主线程中new一个Handler对象,并重写handleMessage方法

private Handler handler = new Handler(){
   public void handleMessage(android.os.Message msg){
   };
};

[2].在子线程中new 一个Message对象,将获取的数据绑定给msg

Message msg = new Message()
result = msg.obj; 

[3].将子线程msg封装的数据发送给主线程

handler.sendMessage(result);

[4].在主线程中的handleMessage方法中接收handler发来的数据,并更新UI

使用Activity的runOnUiThread方法,无论当前线程是否是主线程,都将在主线程中更新ui
runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        tv_simple.setText("我被更新了");
                    }
                });
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值