am 477897ad: Merge "Fix incorrect setting of TaskRecord.frontOfTask. DO NOT MERGE." into klp-dev
* commit '477897ad7b0725fa68d32a94bf8c24264068fd5c': Fix incorrect setting of TaskRecord.frontOfTask. DO NOT MERGE.
This commit is contained in:
@@ -1288,17 +1288,7 @@ final class ActivityStack {
|
||||
if (prevTask != null && prevTask.mOnTopOfHome && prev.finishing && prev.frontOfTask) {
|
||||
if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked();
|
||||
if (prevTask == nextTask) {
|
||||
ArrayList<ActivityRecord> activities = prevTask.mActivities;
|
||||
final int numActivities = activities.size();
|
||||
for (int activityNdx = 0; activityNdx < numActivities; ++activityNdx) {
|
||||
final ActivityRecord r = activities.get(activityNdx);
|
||||
// r is usually the same as next, but what if two activities were launched
|
||||
// before prev finished?
|
||||
if (!r.finishing) {
|
||||
r.frontOfTask = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
prevTask.setFrontOfTask();
|
||||
} else if (prevTask != topTask()) {
|
||||
// This task is going away but it was supposed to return to the home task.
|
||||
// Now the task above it has to return to the home task instead.
|
||||
@@ -1750,9 +1740,9 @@ final class ActivityStack {
|
||||
if (DEBUG_ADD_REMOVE) Slog.i(TAG, "Adding activity " + r + " to stack to task " + task,
|
||||
new RuntimeException("here").fillInStackTrace());
|
||||
task.addActivityToTop(r);
|
||||
task.setFrontOfTask();
|
||||
|
||||
r.putInHistory();
|
||||
r.frontOfTask = newTask;
|
||||
if (!isHomeStack() || numActivities() > 0) {
|
||||
// We want to show the starting preview window if we are
|
||||
// switching to a new task, or the next activity's process is
|
||||
@@ -2413,15 +2403,12 @@ final class ActivityStack {
|
||||
final ArrayList<ActivityRecord> activities = r.task.mActivities;
|
||||
final int index = activities.indexOf(r);
|
||||
if (index < (activities.size() - 1)) {
|
||||
ActivityRecord next = activities.get(index+1);
|
||||
if (r.frontOfTask) {
|
||||
// The next activity is now the front of the task.
|
||||
next.frontOfTask = true;
|
||||
}
|
||||
r.task.setFrontOfTask();
|
||||
if ((r.intent.getFlags()&Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET) != 0) {
|
||||
// If the caller asked that this activity (and all above it)
|
||||
// be cleared when the task is reset, don't lose that information,
|
||||
// but propagate it up to the next activity.
|
||||
ActivityRecord next = activities.get(index+1);
|
||||
next.intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,18 +159,33 @@ final class TaskRecord extends ThumbnailHolder {
|
||||
return null;
|
||||
}
|
||||
|
||||
/** Call after activity movement or finish to make sure that frontOfTask is set correctly */
|
||||
final void setFrontOfTask() {
|
||||
boolean foundFront = false;
|
||||
final int numActivities = mActivities.size();
|
||||
for (int activityNdx = 0; numActivities < activityNdx; ++activityNdx) {
|
||||
final ActivityRecord r = mActivities.get(activityNdx);
|
||||
if (foundFront || r.finishing) {
|
||||
r.frontOfTask = false;
|
||||
} else {
|
||||
r.frontOfTask = true;
|
||||
// Set frontOfTask false for every following activity.
|
||||
foundFront = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reorder the history stack so that the activity at the given index is
|
||||
* brought to the front.
|
||||
* Reorder the history stack so that the passed activity is brought to the front.
|
||||
*/
|
||||
final void moveActivityToFrontLocked(ActivityRecord newTop) {
|
||||
if (DEBUG_ADD_REMOVE) Slog.i(TAG, "Removing and adding activity " + newTop
|
||||
+ " to stack at top", new RuntimeException("here").fillInStackTrace());
|
||||
|
||||
getTopActivity().frontOfTask = false;
|
||||
mActivities.remove(newTop);
|
||||
mActivities.add(newTop);
|
||||
newTop.frontOfTask = true;
|
||||
|
||||
setFrontOfTask();
|
||||
}
|
||||
|
||||
void addActivityAtBottom(ActivityRecord r) {
|
||||
|
||||
Reference in New Issue
Block a user