Matrix
LooperMonitor¶
classDiagram
class IdleHandler{
boolean queueIdle()
}
IdleHandler<|--LooperMonitor
构造函数¶
register()¶
of()¶
resetPrinter()¶
LooperPrinter¶
dispatch()¶
addListener()¶
queueIdle()¶
当消息队列空闲时,会调用IdleHandler
的queueIdle
方法。
LooperDispatchListener¶
UIThreadMonitor¶
classDiagram
class BeatLifecycle{
void onStart();
void onStop();
boolean isAlive();
}
<<interface>> BeatLifecycle
BeatLifecycle<|--UIThreadMonitor
init()¶
onStart()¶
addFrameCallback()¶
run()¶
doFrameBegin()¶
doQueueBegin()¶
doQueueBegin()
和doQueueEnd()
负责记录每一个队列执行的时间。
doQueueEnd()¶
sequenceDiagram
DisplayEventReceiver->>DisplayEventReceiver:dispatchVsync()
DisplayEventReceiver->>FrameDisplayEventReceiver:onVsync()
FrameDisplayEventReceiver->>Handler:sendMessageAtTime()
sequenceDiagram
Looper->>Looper:loop()开始执行
Looper->>LooperDispatchListener:dispatchStart()
LooperDispatchListener->>UIThreadMonitor:dispatchBegin()
dispatchBegin()¶
dispatchEnd()¶
FrameTracer¶
classDiagram
class IAppForeground{
}
<<interface>> IAppForeground
class ITracer{
void onAlive()
}
<<interface>> ITracer
IAppForeground<|--ITracer
class LooperObserver{
}
<<abstract>> LooperObserver
class Tracer{
}
<<abstract>> Tracer
LooperObserver<|--Tracer
ITracer<|--Tracer