android消息传递机制---handler

    出于性能优化考虑,Android的UI线程操作并不是安全的,也就是说,几个线程同时操作UI可能会导致线程安全问题,为了解决这个问题,android规定只有UI线程也就是主线程才能修改UI界面,那么当其他线程想要改变UI线程该怎么做呢?这时候就需要Handler消息传递机制。。。
原料: Handler类,MessageQueue类,Looper类
Looper   : 每一个类至多只有一个Looper,他负责管理 MessageQueue,会不断将MessageQueue中的消息往Handler分发(消息分发靠的是loop()函数)
构造函数如下:
private Looper() {
mQueue = new MessageQueue();
mRun = true;
mThread = Thread.getCurrentThread();

private意为着不能直接new该对象,也就是说想要new该对象必须调用Looper,prepare()方法。
MessageQueue:由Looper管理的储存消息的队列。
Handler:负责往对应的Looper管理的MessageQueue发送消息,也负责处理Looper分发过来的消息。
注意:因为在主线程中系统已经初始化了一个Looper,所以并不需要new相关的Looper及其相关的函数。
在非主线程中使用Handler步骤:
  1. 调用Looper的prepare()函数为当前线程创建一个Looper对象(它的构造器会自动创建相关的MessageQueue)
  2.创建Handler子类的实现,重写其handlerMassage()方法,这个方法是负责处理传过来的信息的
  3.调用Looper.loop()方法启动Looper;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值