From 6d37a5ea605d89f7ad1743997c43d964c0b2c1c1 Mon Sep 17 00:00:00 2001 From: wilsonshih Date: Fri, 25 Jun 2021 17:14:57 +0800 Subject: [PATCH] Remove activity from unknown app if starting window is relayouted. App transition would need to wait for unknown activity become resumed or relayout if it was start when lock screen on, and there may take a long time to wait for an app relayout. But actually there will create starting window as soon as keyguard is unlock, so there can listen for starting window drawn as a sign to remove the activity from unknow app list. There can save hundards ms if there are launch a large app. Test: launch app from lock screen with/without set credential. Bug: 187808226 Change-Id: I088a0f88c310ca8f2d886f078a318bbaca21f6c3 --- .../com/android/server/wm/UnknownAppVisibilityController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/UnknownAppVisibilityController.java b/services/core/java/com/android/server/wm/UnknownAppVisibilityController.java index 5e81e4008680d..4007661cf1a0d 100644 --- a/services/core/java/com/android/server/wm/UnknownAppVisibilityController.java +++ b/services/core/java/com/android/server/wm/UnknownAppVisibilityController.java @@ -133,7 +133,7 @@ class UnknownAppVisibilityController { Slog.d(TAG, "App relayouted appWindow=" + activity); } int state = mUnknownApps.get(activity); - if (state == UNKNOWN_STATE_WAITING_RELAYOUT) { + if (state == UNKNOWN_STATE_WAITING_RELAYOUT || activity.mStartingWindow != null) { mUnknownApps.put(activity, UNKNOWN_STATE_WAITING_VISIBILITY_UPDATE); mService.notifyKeyguardFlagsChanged(this::notifyVisibilitiesUpdated, activity.getDisplayContent().getDisplayId());