Consider stack invisible if it got no running apps.

When we close an freeform app by X button while an app is docked on
the other side, ActivityStack.ensureActivitiesVisibleLocked() failed
to make home stack visible, because it's under the freeform stack
which only contains one finishing activity.

We usually will not do another round of ensureActivitiesVisibleLocked
when the activity is destroyed. Need to make sure visibility is adjusted
to the stack below when we start finishing the last app in a stack.

bug: 25668050
Change-Id: Id2a23cb9480221a4e55ba3be9eab51f6efd8a700
This commit is contained in:
Chong Zhang
2015-11-12 17:22:40 -08:00
parent c6a2da07bf
commit b16cf34d79

View File

@@ -1338,7 +1338,12 @@ final class ActivityStack {
return topHomeActivity == null || !topHomeActivity.isHomeActivity();
}
final int belowFocusedIndex = mStacks.indexOf(focusedStack) - 1;
// Find the first stack below focused stack that actually got something visible.
int belowFocusedIndex = mStacks.indexOf(focusedStack) - 1;
while (belowFocusedIndex >= 0 &&
mStacks.get(belowFocusedIndex).topRunningActivityLocked() == null) {
belowFocusedIndex--;
}
if ((focusedStackId == DOCKED_STACK_ID || focusedStackId == PINNED_STACK_ID)
&& stackIndex == belowFocusedIndex) {
// Stacks directly behind the docked or pinned stack are always visible.