diff --git a/services/java/com/android/server/am/ActivityRecord.java b/services/java/com/android/server/am/ActivityRecord.java index 2c0b83bef0b81..cf686672a2a3e 100644 --- a/services/java/com/android/server/am/ActivityRecord.java +++ b/services/java/com/android/server/am/ActivityRecord.java @@ -572,8 +572,8 @@ final class ActivityRecord { } boolean isRootActivity() { - ArrayList activities = task.mActivities; - return activities.size() == 0 || this == task.mActivities.get(0); + final ArrayList activities = task.mActivities; + return activities.size() == 0 || this == activities.get(0); } UriPermissionOwner getUriPermissionsLocked() { diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java index 6e033151a6ebb..10145024a74ed 100644 --- a/services/java/com/android/server/am/ActivityStack.java +++ b/services/java/com/android/server/am/ActivityStack.java @@ -1618,6 +1618,12 @@ final class ActivityStack { } private void insertTaskAtTop(TaskRecord task) { + // If this is being moved to the top by another activity or being launched from the home + // activity, set mOnTopOfHome accordingly. + final boolean fromHome = mStackSupervisor.getLastStack().isHomeStack(); + if (!isHomeStack() && (fromHome || topTask() != task)) { + task.mOnTopOfHome = fromHome; + } mTaskHistory.remove(task); // Now put task at top. int stackNdx = mTaskHistory.size(); diff --git a/services/java/com/android/server/am/ActivityStackSupervisor.java b/services/java/com/android/server/am/ActivityStackSupervisor.java index 7d7fe438fba74..dc9036f16745c 100644 --- a/services/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/java/com/android/server/am/ActivityStackSupervisor.java @@ -292,22 +292,6 @@ public final class ActivityStackSupervisor { return mService.startHomeActivityLocked(mCurrentUser); } - final void setLaunchHomeTaskNextFlag(ActivityRecord sourceRecord, ActivityRecord r, - ActivityStack stack) { - if (stack == mHomeStack) { - return; - } - if ((sourceRecord == null && getLastStack() == mHomeStack) || - (sourceRecord != null && sourceRecord.isHomeActivity())) { - if (r == null) { - r = stack.topRunningActivityLocked(null); - } - if (r != null && !r.isHomeActivity() && r.isRootActivity()) { - r.task.mOnTopOfHome = true; - } - } - } - void setDismissKeyguard(boolean dismiss) { if (ActivityManagerService.DEBUG_LOCKSCREEN) mService.logLockScreen(" dismiss=" + dismiss); mDismissKeyguardOnNextActivity = dismiss; @@ -1483,7 +1467,6 @@ public final class ActivityStackSupervisor { // is the case, so this is it! And for paranoia, make // sure we have correctly resumed the top activity. if (doResume) { - setLaunchHomeTaskNextFlag(sourceRecord, null, targetStack); resumeTopActivitiesLocked(targetStack, null, options); } else { ActivityOptions.abort(options); @@ -1579,9 +1562,6 @@ public final class ActivityStackSupervisor { // don't use that intent!) And for paranoia, make // sure we have correctly resumed the top activity. if (doResume) { - // Reset flag so it gets correctly reevaluated. - intentActivity.task.mOnTopOfHome = false; - setLaunchHomeTaskNextFlag(sourceRecord, intentActivity, targetStack); targetStack.resumeTopActivityLocked(null, options); } else { ActivityOptions.abort(options); @@ -1619,7 +1599,6 @@ public final class ActivityStackSupervisor { // resumed the top activity. topStack.mLastPausedActivity = null; if (doResume) { - setLaunchHomeTaskNextFlag(sourceRecord, null, topStack); resumeTopActivitiesLocked(); } ActivityOptions.abort(options); @@ -1698,7 +1677,6 @@ public final class ActivityStackSupervisor { // resumed the top activity. targetStack.mLastPausedActivity = null; if (doResume) { - setLaunchHomeTaskNextFlag(sourceRecord, null, targetStack); targetStack.resumeTopActivityLocked(null); } ActivityOptions.abort(options); @@ -1721,7 +1699,6 @@ public final class ActivityStackSupervisor { top.deliverNewIntentLocked(callingUid, r.intent); targetStack.mLastPausedActivity = null; if (doResume) { - setLaunchHomeTaskNextFlag(sourceRecord, null, targetStack); targetStack.resumeTopActivityLocked(null); } return ActivityManager.START_DELIVERED_TO_TOP; @@ -1755,7 +1732,6 @@ public final class ActivityStackSupervisor { EventLog.writeEvent(EventLogTags.AM_CREATE_TASK, r.userId, r.task.taskId); } ActivityStack.logStartActivity(EventLogTags.AM_CREATE_ACTIVITY, r, r.task); - setLaunchHomeTaskNextFlag(sourceRecord, r, targetStack); targetStack.mLastPausedActivity = null; targetStack.startActivityLocked(r, newTask, doResume, keepCurTransition, options); mService.setFocusedActivityLocked(r);