初识android的消息处理机制
2015-10-27 17:38
260 查看
初识Android消息传递
1.Handler是android消息机制的上层接口,这就是在平常开发中,只需要和handler进行交互的原因.它可以简单的将一个任务切换到handler所在的线程中去执行.Android的消息机制主要是指Handler的运行机制.
2.handler的底层是靠MessageQueue 和 Looper支撑的.MessageQueue中文译为消息队列.Looper译为循环.MessageQueue并不能去处理消息,仅仅是一个消息的存储单元,Looper的作用是去查询是否有新消息,并将消息循环给线程去处理.
3.Looper中有一个ThreadLocal,它并不是一个线程,而是一个存储单元,用来存储数据.
4.主线程又称为UI线程, 也成为ActivityThread.ActivityThread在创立的时候,就会初始化Looper,这也是在主线程可以直接调用Handler的原因.
5.在处理UI的时候,ViewRootImpl会对当前的线程进行判断,即checkThread,如果不是主线程,则会抛出异常.
6.Handler的工作需要Looper,没有Looper的线程就会报错.创建Looper的过程也很简单,通过Looper.prepare()即为当前线程创建一个Looper,紧接着通过Looper.loop()来开启消息循环.
7.Handler发送消息的过程,仅仅是向MessageQueue队列中插入了一条消息,还是会通过Looper来循环,传递给Handler来处理.
1.Handler是android消息机制的上层接口,这就是在平常开发中,只需要和handler进行交互的原因.它可以简单的将一个任务切换到handler所在的线程中去执行.Android的消息机制主要是指Handler的运行机制.
2.handler的底层是靠MessageQueue 和 Looper支撑的.MessageQueue中文译为消息队列.Looper译为循环.MessageQueue并不能去处理消息,仅仅是一个消息的存储单元,Looper的作用是去查询是否有新消息,并将消息循环给线程去处理.
3.Looper中有一个ThreadLocal,它并不是一个线程,而是一个存储单元,用来存储数据.
4.主线程又称为UI线程, 也成为ActivityThread.ActivityThread在创立的时候,就会初始化Looper,这也是在主线程可以直接调用Handler的原因.
5.在处理UI的时候,ViewRootImpl会对当前的线程进行判断,即checkThread,如果不是主线程,则会抛出异常.
6.Handler的工作需要Looper,没有Looper的线程就会报错.创建Looper的过程也很简单,通过Looper.prepare()即为当前线程创建一个Looper,紧接着通过Looper.loop()来开启消息循环.
7.Handler发送消息的过程,仅仅是向MessageQueue队列中插入了一条消息,还是会通过Looper来循环,传递给Handler来处理.
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories