Handler工作原理
来源:互联网 发布:autocad2015注册机mac 编辑:程序博客网 时间:2024/06/07 17:59
Application主线程即ActivityThread类,从入口static main函数开始,调用Looper的prepareMainLoopr(),在被调用的prepare方法中,实例化Looper对象,同时在Looper的构造方法中,创建了MessageQueue(消息队列)。
接着,UI主线程调用Looper的looper(),looper()会让当前线程进入一个无限循环,不断地从MessageQueue中读取消息(Message),queue.next()会对阻塞消息,然后回调msg.target.dispatchMessage(msg)方法处理消息,msg.target实际上会处理消息。
➔Looper与主线程和MessageQueue建立了联系。
在Handler构造方法中,通过Looper.myLooper获取当前线程保存的Looper实例,通过Looper对象得到MessageQueue,即Handler中持有MessageQueue对象。
➔Handler与MessageQueue建立了联系。
再看Handler的sendMessage(msg)方法一直向下查找,在enqueueMessage()中,msg.target = this,将handler作为msg.target的属性,最终调用queue.enqueueMessage(msg),将消息发送给MessageQueue。
➔MessageQueue本质就是一个链表,保存着等待被Looper执行的各种消息,而它的消息是由Handler添加进去的。
回到上边看dispathMessage方法,内部调用handlerMessage(msg),而其方法为空,为什么呢,因为消息的最终回调是由我们控制的,我们在创建handler的时候都是复写handleMessage方法,然后根据msg.what进行消息处理。
- Handler、Looper工作原理
- Handler工作原理
- Handler的工作原理
- Handler的工作原理
- Handler工作原理
- android的Handler工作原理
- android Handler 工作原理分析(一)
- Handler的作用以及工作原理
- Handler、Looper、MessageQueue的工作原理
- Handler,Looper,MessageQueue的工作原理
- Android中handler的工作原理
- Handler, Loop, MessageQueue的工作原理
- Handler、Loop、MessageQueue的工作原理
- Handler、Loop、MessageQueue的工作原理
- Handler,Looper, MessageQueue的工作原理解析
- 对Handler工作原理的分析
- Android消息机制---Handler工作原理
- Android Handler、Loop、MessageQueue的工作原理
- 反射之一(静态反射基本概念和应用)
- laravel框架与thinkPHP框架的区别
- 图像纹理合成及纹理传输算法学习(附源码)
- Oracle 层次查询、递归
- 如何快速将Excel单元格变成图片不需要截图直接换成图片
- Handler工作原理
- 进程之间、线程之间的通信方式总结
- JAVA xml读写修改
- 【ORA】ORA-16629解决办法
- Zookeeper客户端
- 暴风魔镜中的凝视
- 在Windows资源管理器里面设置Excel分多个窗口显示效果
- SocketChannel---各种注意点
- tomcat正常模式下能启动,debug模式下出现异常