Android面试中消息机制解答
来源:互联网 发布:mac的资料库在哪 编辑:程序博客网 时间:2024/05/21 18:36
小编总结一下最近面试遇到的关于Android消息机制的问题。
一 Loop.loop()死循环那为什么程序没有卡死
大家都知道 loop会无限循环MessageQueue中的Message实现UI的更新,但是死循环为什没有卡死线程。
Handler的机制是使用管道来实现的,MessageQueue没有消息时主线程会阻塞管道的读端,当MessageQueue又要处理的消息时,主线程会被唤醒。
大家需要理解Linux管道、epoll机制
二 如何确定消息来自哪个Handler
这个问题小编的理解是Message.target属性。
public static void loop() { for (;;) {//无限循环 Message msg = queue.next(); // might block if (msg == null) { // No message indicates that the message queue is quitting. return; } try { msg.target.dispatchMessage(msg);//获取Message的Handler 然后调用Handler分发 处理消息 } finally { if (traceTag != 0) { Trace.traceEnd(traceTag); } } msg.recycleUnchecked(); } }
三 子线程可以创建Handler吗?
答案是肯定的
一个线程可以有多个Handler,但是只有一个MessageQueue和Loop。
子线程创建Handler之前需要创建Looper。Handler可以实现子线程之间传递消息。
以上是我的解答,欢迎大家指正。
阅读全文
0 0
- Android面试中消息机制解答
- android中消息机制
- 面试时说的Android消息机制
- Android 中Handler消息机制
- Android中Handler消息机制
- Android中消息传递机制
- Android中消息机制详解
- Android消息机制浅析——面试总结
- Android面试常见问题及解答
- Android中Message机制实现消息传递
- Android 中 Handler 消息传递机制
- Android 中 Handler 消息传递机制
- Android中按键消息分发机制 上
- Android中按键消息分发机制 下
- Android中Handler消息传递机制
- Android 中 Handler 消息传递机制
- Android中异步消息处理机制
- android中异步消息的处理机制
- 解决spark中遇到的数据倾斜问题
- Rhyme/Java 设计模式之原型模式prototype通过clone方法和反序列化实现深复制
- 首个酒店管理系统项目感想
- java的23种设计模式
- smarty
- Android面试中消息机制解答
- jstat命令详解
- Excel在统计分析中的应用—第十章—方差分析-有重复双因素方差分析工具
- Java线程池
- 包装类
- ES6学习12章:Generator函数
- 安装mysql最新版出现错误
- 软考常考知识点整理-项目配置管理角色和分工
- 一行命令搞定node.js 版本升级