diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 1bdef433483a9..473b1a34a892b 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -1471,7 +1471,7 @@ final class ActivityStack extends ConfigurationContainer { return STACK_INVISIBLE; } - if (mStackSupervisor.isFrontStack(this) || mStackSupervisor.isFocusedStack(this)) { + if (mStackSupervisor.isFrontStackOnDisplay(this) || mStackSupervisor.isFocusedStack(this)) { return STACK_VISIBLE; } diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 539ac1620961e..5d8d79fd52c2c 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -612,6 +612,15 @@ public class ActivityStackSupervisor extends ConfigurationContainer /** The top most stack. */ boolean isFrontStack(ActivityStack stack) { + return isFrontOfStackList(stack, mHomeStack.mStacks); + } + + /** The top most stack on its display. */ + boolean isFrontStackOnDisplay(ActivityStack stack) { + return isFrontOfStackList(stack, stack.mActivityContainer.mActivityDisplay.mStacks); + } + + private boolean isFrontOfStackList(ActivityStack stack, List stackList) { if (stack == null) { return false; } @@ -620,7 +629,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer if (parent != null) { stack = parent.getStack(); } - return stack == mHomeStack.mStacks.get((mHomeStack.mStacks.size() - 1)); + return stack == stackList.get((stackList.size() - 1)); } /** NOTE: Should only be called from {@link ActivityStack#moveToFront} */