第10章 Android的消息机制

Android的消息机制主要是指Handler的运行机制以及Handler所附带的MessageQueue和Looper的工作过程。
系统提供Handler主要原因是为了解决在子线程中无法访问UI的矛盾。
子线程不允许防伪UI:Android的UI控件不是线程安全的,多线程中并发访问可能导致UI控件处于不可预期的状态。

ThreadLocal:
线程内部的数据存储类,可以在指定线程中存储数据。其实是个键值对,键是线程对象。

Handler:把消息放在MessageQueue中,Post一个Runnable其实是它赋值给Message对象的callback属性。然后再将Message对象放置在消息队列中
                post方法里面就是sendMessage。Handle处理过程中如果callback不为空会先执行。
                message.callback.run();//其实还是在原来的线程当中,可以直接更新UI。
MessageQueue:消息队列,两个操作,插入(enqueueMessage)和读取(next),内部实现通过一个单链表数据结构来维护。
Looper:不停从MessageQueue中查看新消息,有会立即处理没有等待。主线程会内部创建,子线程手动创建
                Looper.prepare();//为当前线程创建looper
                Looper.loop();//开启消息循环
                线程不需要使用的时候终止Looper,有方法quit和quitSafely(消息队列中已有消息处理完毕后安全退出)
                一个Looper和hander在同一个线程。





posted @ 2016-02-23 15:47  咖啡馆的水果拼盘  阅读(106)  评论(0编辑  收藏  举报