阅读Handler源码笔记
来源:互联网 发布:全途打单软件下载 编辑:程序博客网 时间:2024/06/05 01:55
学习android大半年了,今天才去阅读Handler源代码真是惭愧啊!
安卓有一道经典的面试题就是问Handler运行机制原理。包括和Looper,Thread,MessageQueue和Message之间的关系。之前不知道为什么没有去看源代码,只是简简单单的从网上搜了一下他们之间的关系,就天真的认为自己清楚了,哎,真是天真到了极点。
总结一下今天阅读Handler源码的收获:
1.Handler的作用?
翻译一下源码中的注释:1.Handler可以设置Message或者Runnable在未来某个时刻运行。2.Handler可以让你在当前线程之外的线程中执行你要执行的动作。(英文水平有限,只能大概翻译一下啦!)
2.Handler与线程的关系?
每一个Handler实例与唯一的一个线程和这个线程的MessageQueue关联。也就是Handler和线程是一对一的关系,当然线程和Handler是一对多的关系了。
3.Handler与Looper的关系?
先说一下Looper和Thread的关系,一个Thread只能有一个Looper,他们是一对一的关系。Handler实例包含了一个Looper对象,所以Handler和Looper也是一对一的关系。注意:创建Handler对象时,所在的线程必须有Looper,否则会创建失败,可通过调用Looper.prepare创建线程的Looper。
4.Handler与MessageQueue的关系?
一个Looper拥有唯一的MessageQueue,所以Handler与对应Looper的MessageQueue相关联。Handler负责把要执行的Message放入MessageQueue中去。
5.Handler与Message的关系?
Handler与Message的唯一关系,就是把Message放入MessageQueue当中。同时,Handler会把Message和自己关联起来,Message对象中会存有Handler的一个引用。
6.Handler的运行机制原理?
Handler将Message放入MessageQueue当中,Handler所对应的Thread中的Looper通过循环不断从MessageQueue中取出Handler放入的Message,Message通过自身关联的Handler对象执行dispatchMessage(Message msg)方法完成所要执行的动作。
7.MessageQueue与Message的关系?
MessageQueue维护了一个Message的链表。
- 阅读Handler源码笔记
- Android Handler 源码笔记
- springmvc源码阅读笔记 --Object handler和request请求路径查询lookupPath
- dotText源码阅读(5)--URLreWrite和Handler
- LZ77源码阅读笔记
- Boa 源码阅读笔记
- VNC源码阅读笔记
- osqa源码阅读笔记
- VNC源码阅读笔记
- MPlayer 源码阅读笔记
- PyEmu源码阅读笔记
- JSONModel源码阅读笔记
- JSONModel源码阅读笔记
- HSF源码阅读笔记
- memcached 源码阅读笔记
- ALLJOYN源码阅读笔记
- netmap源码阅读笔记
- ArrayList源码阅读笔记
- Eclipse facebook 第三方登录 获取用户信息 附demo
- library not found for -lPods 的解决办法
- Java 手动编译 javac 的-classpath -sourcepath
- C++模板----限制模板只能某些已知类型进行实例化
- bug调试的心态
- 阅读Handler源码笔记
- C/C++中的标准库函数总结
- 简单实现安全卫士火箭上升的雏形
- hbase 建表时分region
- 实现二维码扫描后跳转
- 如何在 Ubuntu 中安装 VMTools
- hibernateTemplate与实际的业务对事务的支持
- vimtutor 1.7中文版
- 建立自己的知识体系