Handler消息传递机制

本文深入解析了Android中Handler机制的工作原理及其应用场景。介绍了如何利用Handler解决多线程中UI更新的问题,并提供了具体的代码示例。
Android的消息机制是另一种形式的“事件处理”,这种机制是为了解决Android应用的多线程问题。--Android平台不允许Activity新启动的线程访问Activity里的界面组件,这样会导致新启动的线程无法修改界面组件的属性值,此时我们需要通过Hander的消息机制来实现了。

1.Handler简介
  1) Handler作用:
                在新启动的线程中发送消息
                在主线程中获取,处理消息
  2)控制消息的发送和接受的时机
     通过回调的方法来实现,开发者需要重写Handler类中处理消息的方法,当新启动的线程发送消息
     时,Handler类中处理消息的方法被自动回调。
  3)Handler类包含如下方法用于发送、处理消息
     . void handleMessage(Message msg):处理消息的方法。该方法通常用于被重写
     . final boolean hasMessages(int what):检查消息队列中是否包含what属性为指定值的消息
     . final boolean hasMessages(int what,Object object) :检查消息队列中是否包含what属性为指定值
       的消息且object属性为指定对象的消息
     . 多个重载的Message obtainMessage():获取消息
     . sendEmptyMessage(int what):发送空消息
     . final boolean sendEmptyMessageDelayed(int what,long delayMills):指定多少秒后发送空消息
     . final boolean sendMessage(Message msg):立即发送消息
     . final boolean sendMessageDelayed(Message msg,long delayMills):指定多少秒后发送消息
  
2.使用心得:
  1) 发送消息
    新的启动线程,如:
    new Timer().schedule(new Task(){
        public void run(){
           Message msg = new Message();
           msg.what=0x1223;
           myHandler.sendMessage(msg);
        }
   });
  在上面中myHandler 是重写后的实例化对象:
  final Handler myHandler = new Handler(){
      public void handleMessage(Message msg){
          if(msg.what = 0x1223){   //确保此条消息是本程序发送
                .......
          }
      }
  };
  当新的线程发送发送消息时,重写的handlerMessage(Message msg)就会被回调,从而达到了新线程来修改
  Activity组件的属性效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值