1. Runnable状态的线程
- Runnable状态的线程,之前都是sleep状态,可以查看其是被哪个APP的哪个线程唤醒
- 可见,之前处于sleep状态的线程是被launcher中的3158线程唤醒.
- Runnable状态的线程持续时间越长,表示CPU调度越忙,没有及时处理这个任务.
- 那CPU当前在处理哪个任务?
- 选中Runnable后面的Running,查看其在哪个CPU上运行
- 选中Runnable,向上拉到对应CPU,看当前时间短该CPU在执行哪个任务
2. 几个概念
- 屏幕刷新率
- 硬件的概念
- 1秒内会刷新显示画面的次数
- FPS
- 软件概念
- Frame per Second :1秒可以产生多少帧画面
3. SystemServer中的ActivityManagerService
- 与AMS相关的Trace一般会用TRACE_TAG_ACTIVITY_MANAGER,在Systrace中的名字是ActivityManager.位于SystemServer中.
4. SystemServer中的WindowManagerService
- 与 WMS 相关的 Trace 一般会用 TRACE_TAG_WINDOW_MANAGER 这个 TAG.
- Systrace 中 WindowManagerService 在 SystemServer 中多在 对应的 Binder 中出现,比如下面应用启动的时候,relayoutWindow 的 Trace 输出.
5. SystemServer中的Input
- 在SystemServer中,Input主要由InputReader和InputDispatcher两个线程组成.
6. Android主线程运行机制的本质
- 就是Message的处理过程
- 各种操作,包括每一帧的渲染,都是通过Message形式发给主线程的MessageQueue, MessageQueue处理完当前Message继续等待下一个Message.
7. Vsync + TripleBuffer + Choreographer
- 目的是为了提供一个稳定的帧率输出机制
- 让软件层和硬件层可以用相同的频率一起工作
- 对于60HZ的屏幕刷新率,Vsync信号周期对应16.6ms,每隔16.6ms,Vsync信号唤醒Choreographer来执行APP的绘制操作.