主线程消息循环机制本质
来源:互联网 发布:lomo拍立得知乎 编辑:程序博客网 时间:2024/06/14 13:57
1.主线程消息循环:ActivityThread主线程的入口方法:mainmain() {Looper.prepareMainLooper(); // 创建Looper,并添加到线程中Looper.loop(); // 死循环查询,取出Message,执行Message绑定的Handler的handleMessage}Looper.prepareMainLooper-->// Looper.javapublic static final void prepareMainLooper() { prepare(); // 创建一个Looper并加入到线程局部变量中:sThreadLocal.set(new Looper()); setMainLooper(myLooper()); // 将prepare创建的Looper对象取出,并保存到变量mMainLooper = looper; }// ELooper.loop();-->// Looper.java public static final void loop() { Looper me = myLooper(); // 获取当前线程对应的Looper,也就是prepare保存进去的looper MessageQueue queue = me.mQueue; while (true) { Message msg = queue.next(); // might block.如果消息队列为空则休眠,有数据插入到消息队列则唤醒 if (msg != null) { if (msg.target == null) { // No target is a magic identifier for the quit message. return; } msg.target.dispatchMessage(msg); // 调用Message.handleMessage msg.recycle(); } } }小结:1.涉及到类Looper:引用MessageQueueMessageQueue:引用多个Message.本质是一个队列,按照未来即将超时时间来排序队列中的每个元素MessageHandler:把Message插入到MessageQueue中 2.E.Looper.loop是引擎,本质是一个死循环,不断查询MessageQueue中是否有Message,如果有超时的Message,则取出来调用Message绑定的Handler的handlerMessage函数
1 0
- 主线程消息循环机制本质
- Android主线程消息循环
- android 主线程事件循环机制
- 主线程while死循环,导致不能处理消息
- 主线程和子线程中的消息循环
- 消息机制--主线程与子线程信息交互
- 主线程阻塞、消息队列机制和图片下载
- Handler消息传递机制(四)子线程接收主线程发送的消息
- Android消息通信机制(主线程发消息到子线程)
- SDK消息循环机制
- windows 消息循环机制
- SDK消息循环机制
- chromium消息循环机制
- 消息循环机制
- Windows消息循环机制
- Android消息循环机制
- Android消息循环机制
- Android消息循环机制
- oracle.jbo.RowInconsistentException: JBO-25014: Another user has changed the row with primary key or
- 第4课 简单绘图
- C#之运算符重载学习案例
- 第5课 文本编程
- Maven基础配置—上传jar包到私服
- 主线程消息循环机制本质
- 比较有用的正则
- 第6课 菜单
- Alphabet旗下Nest重组:开发团队并入谷歌
- SpringMVC项目接收Json数据报406错误
- 第7课 对话框1
- 生活锁率
- ajax教程
- 欢迎使用CSDN-markdown编辑器