diff options
author | Craig Mautner <cmautner@google.com> | 2014-02-22 07:51:02 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-02-22 07:51:02 +0000 |
commit | 92a507986af512d248a1987971b59911406721a9 (patch) | |
tree | 0ce24950b9d536c36fc6ece27251ea72a7fd4e0f /services | |
parent | 3196d811d0efc21efd57fed307cfd348492c3074 (diff) | |
parent | 3dc57b39f2a87fe3692b5606de2b0c0693fc485c (diff) | |
download | frameworks_base-92a507986af512d248a1987971b59911406721a9.zip frameworks_base-92a507986af512d248a1987971b59911406721a9.tar.gz frameworks_base-92a507986af512d248a1987971b59911406721a9.tar.bz2 |
am 3dc57b39: am c004c9a8: am ffda4648: Merge "Fixes for ActivityView on home activity" into klp-modular-dev
* commit '3dc57b39f2a87fe3692b5606de2b0c0693fc485c':
Fixes for ActivityView on home activity
Diffstat (limited to 'services')
-rw-r--r-- | services/core/java/com/android/server/am/ActivityStackSupervisor.java | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 6ed30d9..3a837e8 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -1376,8 +1376,15 @@ public final class ActivityStackSupervisor implements DisplayListener { void setFocusedStack(ActivityRecord r) { if (r != null) { - final boolean isHomeActivity = - !r.isApplicationActivity() || (r.task != null && !r.task.isApplicationTask()); + final TaskRecord task = r.task; + boolean isHomeActivity = !r.isApplicationActivity(); + if (!isHomeActivity && task != null) { + isHomeActivity = !task.isApplicationTask(); + } + if (!isHomeActivity && task != null) { + final ActivityRecord parent = task.stack.mActivityContainer.mParentActivity; + isHomeActivity = parent != null && parent.isHomeActivity(); + } moveHomeStack(isHomeActivity); } } @@ -2059,17 +2066,21 @@ public final class ActivityStackSupervisor implements DisplayListener { if (targetStack == null) { targetStack = getFocusedStack(); } + // Do targetStack first. boolean result = false; + if (isFrontStack(targetStack)) { + result = targetStack.resumeTopActivityLocked(target, targetOptions); + } for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) { final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks; for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = stacks.get(stackNdx); + if (stack == targetStack) { + // Already started above. + continue; + } if (isFrontStack(stack)) { - if (stack == targetStack) { - result = stack.resumeTopActivityLocked(target, targetOptions); - } else { - stack.resumeTopActivityLocked(null); - } + stack.resumeTopActivityLocked(null); } } } |