diff --git a/services/core/java/com/android/server/am/ActivityMetricsLogger.java b/services/core/java/com/android/server/am/ActivityMetricsLogger.java index 47d0423550c4f..6d7b4fd8998a1 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 e034b824dc506..bf8ebf32da50e 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -708,6 +708,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) {