Learning Handler

Handler学习笔记 

--------------------------Promise yourself to be strong that nothing can disturb your peace of mind.

1.Looper是个死循环,在当前线程中looper并没有开一个新线程,因为它是由系统来循环的。

2.Handler作用:1)执行计划任务,你可以再预定的实现执行某些任务,可以模拟定时器;

2)线程间通信。在android的应用启动时,会创建一个主线程,主线程会创建一个消息队列来处理各种消息。当你创建子线程时,你可以在你的子线程中拿到父线程中创建的Handler对象,就可以通过该对象向父线程的消息列队发送消息了。由于android要求在UI线程中更新界面,因此,可以通过该方法在其它线程中更新界面。

3.角色描述

1)Looper(相当于隧道)一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(车队,消息隧道)

2)Handler:你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper(Message Queue取出)所送来的消息。

3)Message Queue(消息队列):用来存放线程放入的消息。

每一个线程里可含有一个Looper对象以及一个MessageQueue数据结构。在你的应用程序里,可以定义Handler的子类别来接收Looper所送出的消息。

主线程就是一个消息队列,为什么不同实例之间不能共享消息(what flag标识)?

总结:1Handler实例与消息处理是关联的,发送和接收要匹配;

2)Handler接收队列,主要是在子线程操作主线程消息队列;

3)子线程默认是没有消息队列的。

4.使用Handler是异步,不会建立新线程,Handler一般是在主线程中,如果用实例化Looper后,进行操作,可以在当前线程进行。


使用android去访问网络资源,绝对不能在UI主线程去开,去直接访问我们的网络,我们必须要声明一个子线程,然后在子线程中访问网络,再把子线程中访问网络得到的结果返回到UI主线层中,在UI主线程中更新UI.

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值