当前位置:编程学习 > wap >>

Choreographer的一个问题

小弟正在研究4.1里面的Choreographer模块,现在看到一个问题不太清楚,就是4.1的invalidate所回调的UI消息不再会跟之前一样直接插到主线程消息队列里面去了,而是插到Choreographer里面的一个队列数据结构里面去了,然后会根据硬件所提供的垂直中断信号统一的回插到UI消息队列,代码里在将UI消息插入Choreographer里面的数据结构之前将UI消息队列block掉了(就是调了一个looper的postSyncBarrier函数),然后在UI消息被执行之前就是那个performTraversals函数被调用之前将这个barrier去掉,这部分我基本看明白了,这样一来按照我的理解从消息队列被block之后一直到被解除block状态之前所插入UI消息队列的非Asynchronous消息肯定不会被MessageQueue的next()返回,如果我的理解对的话,那么如果我在performTraversals函数处理过程中在调用一次invalidate(),比方讲在随便哪个view的onDraw函数里面,这样不就使得UI消息队列永远处于block状态了?那我做一个小实验在onDraw调用invalidate之后在随便post一个runnable还是会被执行啊,难道我的理解错了?有没有大神告诉我这种UI消息队列在连续被block状态下的runnable是怎么被执行的啊? asynchronous android  Choreographer --------------------编程问答-------------------- 没人回答么
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,