安卓ui学习_第一部分

1. AttachInfo为View 里的一个静态内部类

看它的构造函数, 它关联了window, windowsession, viewrootImpl, windowToken, display, handler等元素

2. 关于ViewRootImpl

在View中 和 PhoneWindow中都可以得到这个对象

ViewRootImpl的setView()方法, 只会在第一次有用, 后续如果mView已经不为空了,  那么这个方法将什么都不做.

3. Choreographer  这个类的作用

关于这个类有个博文:http://www.jianshu.com/p/6f2043570de4

学到一个开源项目 TinyDancer   可以检查帧率.

先看注释,  CP(Choreographer)的作用是为了协调输入, 动画, 绘制(渲染)三者的关系.

每个线程一个Choreographer对象.

先看一个内部handler子类: FrameHandler   一个标准的Handler类, 处理三种事件:

MSG_DO_FRAME

MSG_DO_SCHEDULE_VSYNC

MSG_DO_SCHEDULE_CALLBACK

-----以上这三个消息是干啥的?

内部类FrameDisplayEventReceiver   继承自DisplayEventReceiver  ,   这里又延伸出一个重要的类DisplayEventReceiver.

简单来说FrameDisplayEventReceiver实例被native层的vsync信号触发onVsync()方法调用

创建了包含4个CallbackQueue元素的数组,  分别对应: input, animation , traversal, commit 四种类型,   前三种就不说了.  最后一个commit的逻辑是这样的:

4.DisplayEventReceiver类相关

public void onVsync(long timestampNanos, int builtInDisplayId, int frame)   被native层调用dispatchVsync()

另外一个hotPlug事件是干什么的?

你可能感兴趣的:(安卓ui学习_第一部分)