关于Handler的SyncBarrier解析

概念 SyncBarrier是同步分隔栏的意思,其实它是一个特殊的Message,它的targer为null。当消息队列遍历到这种消息类型的时候,它会跳过后面的同步Message(异步的Message会执行),这就是所谓的“同步分割栏”。 同步消息和异步消息 同步消息和异步消息的设置可以通过Handler的构造方法来指定: public Handler(Callback callback, boolean async) 也可以在Message中设置: public void setAsynchronous(boolean async) 同步消息和异步消息的区别就是SyncBarrier对它们的处理不同。 源码解析 private »

Android Hanlder消息机制源码浅析

开始 Android的消息机制主要是围绕Handler展开的,而对于Handler大家都再熟悉不过了,在开发过程中,有时候需要在子线程中进行耗时的操作,比如访问网络、I/O操作,当耗时操作完成之后需要在UI上做一些改变,由于Android开发的限制,我们不能在子线程中直接访问UI控件,这个时候就可以通过Hanlder将更新UI的操作切换的主线程中执行。 为什么Android系统不允许在子线程中更新UI呢?因为Android的UI控件不是线程安全的,如果在多线程中并发访问可能会导致一些不可预期的并发问题。那为什么不对UI控件的访问加上同步操作呢?主要是因为加锁会让UI访问的逻辑变得复杂,同时加锁也会降低访问的效率。 很多人认为Handler的作用是更新UI,的确没错,但是更新UI仅仅是Handler的一个特殊使用场景。 Android消息机制模型 Android的消息机制并不复杂,主要涉及一下这几个类: Handler: 负责消息的发送和处理; »