symbian DrawDeferred drawnow 区别 (转)

1.

我们一般会调用DrawNow或DrawDeferred. 由它请求window server让当前绘制区域无效, 并传递事件给应用, 导致Draw函数被调用.

那么我们的绘制请求发给window server, 是作为命令的方式, 发过去, 因为绘制屏幕非常耗时耗电, 所以一般情况下, window server会缓存绘制命令, 并按照业务逻辑把一堆绘制命令组合到一起并发送重绘请求给应用.

对于普通应用, 这个规则有效的提高了系统的可用性, 早期symbian没有缓存时, 系统的可用性非常差, 感觉反应迟钝, 因为系统一直在不停的重绘屏幕, 加了这个规则后, 界面性能提升明显.

但是这个是不适合游戏视频类等实时显示任务, 因此os还是提供立刻刷新屏幕的命令, 这个就是DrawNow.

所以我们一般调用DrawDeferred, 系统按照逻辑安排重绘事件, 但是如果要立刻显示, 不要缓存, 就是用DrawNow


也就是说, DrawNow不需要缓存,会立刻显示, 而DrawDeferred需要缓存,不会立刻显示.

 

2.

drawnow每次只吊自己的draw,而drawdeffered会调父控件的draw和本身的draw

你可能感兴趣的:(游戏,server,OS,任务,Symbian)