/BlockDetectUI_Java

BlockDetectUI_Java

Primary LanguageJava

BlockDetectUI_Java

前言

对于代码中存在的UI线程耗时的操作,我们需要有一套检测机制,帮助我们定位耗时发生的位置。

两种检测方式

1,利用UI线程Looper打印的日志 2,利用Choreographer

loop 日志如下

final Printer logging = me.mLogging; if (logging != null) { logging.println(">>>>> Dispatching to "
+ msg.target + " "

+ msg.callback + ": " + msg.what); }

        try {
            msg.target.dispatchMessage(msg);
            if (observer != null) {
                observer.messageDispatched(token, msg);
            }
            dispatchEnd = needEndTime ? SystemClock.uptimeMillis() : 0;
        } catch (Exception exception) {
            if (observer != null) {
                observer.dispatchingThrewException(token, msg, exception);
            }
            throw exception;
        } finally {
            ThreadLocalWorkSource.restore(origWorkSource);
            if (traceTag != 0) {
                Trace.traceEnd(traceTag);
            }
        }

        if (logging != null) {
            logging.println("<<<<< Finished to " + msg.target + " " + msg.callback);
        }

BlockDetectUI_Java 我们的卡顿的原因就在于没有办法在16ms完成该完成的操作。 监控UI卡顿