If COLD startup occurs while launcher is backgrounded, do not wait until user goes to home to end startup session.

Fix: 305243183
Test: lock screen, force stop launcher, verify COLD startup is logged before user unlocks screen
Flag: N/A
Change-Id: I2d93dc3346e1aec82555162c9bb868cc4ddb621b
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index dfcd279..4e755da 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -2631,26 +2631,24 @@
             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));