Set correct focus activity when using FLAG_ACTIVITY_REORDER_TO_FRONT

When FLAG_ACTIVITY_REORDER_TO_FRONT is used to launch an activity we
move the activity to the front of the task, but the ActivityRecord.frontOfTask
isn't set because the activity isn't in the resumed set yet.
This causes issues later on when we try to detemine the focus activity in
ActivityStack.adjustFocusedActivityLocked.
We now set ActivityRecord.frontOfTask for the activity we are moving
due to FLAG_ACTIVITY_REORDER_TO_FRONT

Bug: 25487874
Change-Id: I4a20e6fb11e04ae16361da27c59aec2641b82bfb
This commit is contained in:
Wale Ogunwale
2015-11-05 09:50:55 -08:00
parent ce8bf86d6d
commit 6d42df6d17

View File

@@ -572,9 +572,18 @@ final class TaskRecord {
return null;
}
void setFrontOfTask() {
setFrontOfTask(null);
}
/** Call after activity movement or finish to make sure that frontOfTask is set correctly */
final void setFrontOfTask() {
boolean foundFront = false;
void setFrontOfTask(ActivityRecord newTop) {
// If a top candidate is suggested by the caller, go ahead and use it and mark all others
// as not front. This is needed in situations where the current front activity in the
// task isn't finished yet and we want to set the front to the activity moved to the front
// of the task.
boolean foundFront = newTop != null ? true : false;
final int numActivities = mActivities.size();
for (int activityNdx = 0; activityNdx < numActivities; ++activityNdx) {
final ActivityRecord r = mActivities.get(activityNdx);
@@ -591,6 +600,9 @@ final class TaskRecord {
// activity, make the bottom activity front.
mActivities.get(0).frontOfTask = true;
}
if (newTop != null) {
newTop.frontOfTask = true;
}
}
/**
@@ -605,7 +617,7 @@ final class TaskRecord {
mActivities.add(newTop);
updateEffectiveIntent();
setFrontOfTask();
setFrontOfTask(newTop);
}
void addActivityAtBottom(ActivityRecord r) {