handler中的同步屏障机制解析

同步屏障机制

通过mHandler.getLooper().getQueue().postSyncBarrier();可以开启同步屏障。

简单来说就是发送一个特殊的消息,它的target为空。

然后,looper的死循环中,会判断一个消息的target==null,满足条件就会开始dowhile遍历,直到找到异步消息并执行,执行完会重复上述操作。(异步消息判断方法由)

当我们手动关闭同步屏障时,就不会卡住同步消息了。

同步屏障不能唤醒block的线程,也不会阻止消息的发送到队列。

异步消息发送方法
setAsynchronous(),将某条消息设置为异步,不过我们平时发送需要通过反射才能调用到。

还有一种就是handler构造里传参数,但这个是发送所有消息都是异步。

猜你喜欢

转载自blog.csdn.net/weixin_44380181/article/details/129738582