原文地址:https://www.jianshu.com/p/e58992439793
知识点:1 activityThread 对应的是主线程 主线程拥有自己的 Looper
activityThread初始化的时候 会初始自己的Looper
2 Android 所有的交互 都是通过Handler Message MessagQue 来分发消息的
实现原理 关键 代码:
设置 自定义的LooperMonitor
LooperMonitor 实现了android.util.Printer;
Looper.getMainLooper().setMessageLogging(new LooperMonitor());
重写println 方法 对于每一个message println 都是成对执行的
@Override
public void println(String x) {
if (mStopWhenDebugging && Debug.isDebuggerConnected()) {
return;
}
if (!mPrintingStarted) {
mStartTimestamp = System.currentTimeMillis();
mStartThreadTimestamp = SystemClock.currentThreadTimeMillis();
mPrintingStarted = true;
startDump();
} else {
final long endTime = System.currentTimeMillis();
mPrintingStarted = false;
if (isBlock(endTime)) {
notifyBlockEvent(endTime);
}
stopDump();
}
}