Learning Handler
来源:互联网 发布:php发送短信验证码 编辑:程序博客网 时间:2024/05/22 00:38
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标识)?
总结:1)Handler实例与消息处理是关联的,发送和接收要匹配;
2)Handler接收队列,主要是在子线程操作主线程消息队列;
3)子线程默认是没有消息队列的。
4.使用Handler是异步,不会建立新线程,Handler一般是在主线程中,如果用实例化Looper后,进行操作,可以在当前线程进行。
使用android去访问网络资源,绝对不能在UI主线程去开,去直接访问我们的网络,我们必须要声明一个子线程,然后在子线程中访问网络,再把子线程中访问网络得到的结果返回到UI主线层中,在UI主线程中更新UI.
- Learning Handler
- Learning
- learning
- learning
- learning
- learning
- learning
- learning
- android studio for android learning (十九 ) 最新Handler消息传递机制全解
- Handler
- Handler
- Handler
- handler
- handler
- Handler
- Handler
- Handler
- Handler
- c文件操作 (转)
- 为什么苹果的利润不会受HTML5影响?
- Android day4:Java的类型转换、Scanner、错误类型
- AIX 6.1 11g RAC数据库怎样改网段
- 动态规划 ——总结.
- Learning Handler
- --pl/sql包,游标,存储过程,块
- 4566: [Haoi2016]找相同字符 广义后缀自动机
- 一道JAVA面试题(匿名内部类)
- leetcode #20 in cpp
- 学习经历之格式篇
- 深入浅出UML类图---写得不错,备忘
- 4565: [Haoi2016]字符合并 区间DP
- AngularJS $route路由