diff --git a/services/core/java/com/android/server/am/ActivityMetricsLogger.java b/services/core/java/com/android/server/am/ActivityMetricsLogger.java index 6618830a127ad..1611a384f4e3a 100644 --- a/services/core/java/com/android/server/am/ActivityMetricsLogger.java +++ b/services/core/java/com/android/server/am/ActivityMetricsLogger.java @@ -185,6 +185,10 @@ class ActivityMetricsLogger { mWindowState = WINDOW_STATE_INVALID; ActivityStack stack = mSupervisor.getFocusedStack(); + if (stack == null) { + return; + } + if (stack.isActivityTypeAssistant()) { mWindowState = WINDOW_STATE_ASSISTANT; return; diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index c37226680d543..a77d7348620e0 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -709,6 +709,11 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D if (!focusCandidate.isFocusable()) { // The focus candidate isn't focusable. Move focus to the top stack that is focusable. focusCandidate = getNextFocusableStackLocked(focusCandidate, false /* ignoreCurrent */); + if (focusCandidate == null) { + Slog.w(TAG, + "setFocusStackUnchecked: No focusable stack found, focus home as default"); + focusCandidate = mHomeStack; + } } if (focusCandidate != mFocusedStack) {