diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 4a9add485a..7d6204594d 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -2595,26 +2595,24 @@ public class Launcher extends StatefulActivity Trace.endAsyncSection(DISPLAY_WORKSPACE_TRACE_METHOD_NAME, DISPLAY_WORKSPACE_TRACE_COOKIE); } - mStartupLatencyLogger - .logCardinality(workspaceItemCount) - .logEnd(isBindSync - ? LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC - : LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC); - // In the first rootview's onDraw after onInitialBindComplete(), log end of startup latency. + MAIN_EXECUTOR.getHandler().postAtFrontOfQueue(() -> { + mStartupLatencyLogger + .logCardinality(workspaceItemCount) + .logEnd(isBindSync + ? LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC + : LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC) + .logEnd(LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION) + .log() + .reset(); + if (mIsColdStartupAfterReboot) { + Trace.endAsyncSection(COLD_STARTUP_TRACE_METHOD_NAME, + COLD_STARTUP_TRACE_COOKIE); + } + }); getRootView().getViewTreeObserver().addOnDrawListener( new ViewTreeObserver.OnDrawListener() { - @Override public void onDraw() { - mStartupLatencyLogger - .logEnd(LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION) - .log() - .reset(); - if (mIsColdStartupAfterReboot) { - Trace.endAsyncSection(COLD_STARTUP_TRACE_METHOD_NAME, - COLD_STARTUP_TRACE_COOKIE); - } - MAIN_EXECUTOR.getHandler().postAtFrontOfQueue( () -> getRootView().getViewTreeObserver() .removeOnDrawListener(this));