Merge "Ensure visible activities when device is unlocked." into oc-dev

am: 293afb3917

Change-Id: I7e8827cdc75212223fa9e42852f8505dbebee8eb
This commit is contained in:
Wale Ogunwale
2017-04-11 23:59:22 +00:00
committed by android-build-merger
2 changed files with 15 additions and 1 deletions

View File

@@ -65,6 +65,7 @@ import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NA
import static com.android.server.am.ActivityRecord.APPLICATION_ACTIVITY_TYPE;
import static com.android.server.am.ActivityRecord.ASSISTANT_ACTIVITY_TYPE;
import static com.android.server.am.ActivityRecord.HOME_ACTIVITY_TYPE;
import static com.android.server.am.ActivityStack.ActivityState.STOPPED;
import static com.android.server.am.ActivityStackSupervisor.FindTaskResult;
import static com.android.server.am.ActivityStackSupervisor.ON_TOP;
import static com.android.server.am.ActivityStackSupervisor.PAUSE_IMMEDIATELY;
@@ -1166,6 +1167,8 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
final ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities;
for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
final ActivityRecord r = activities.get(activityNdx);
// TODO(b/37244415): This just wrong. We should also be moving PAUSED activities to
// the stopped state when we are sleeping.
if (r.state == ActivityState.STOPPING || r.state == ActivityState.STOPPED
|| r.state == ActivityState.PAUSED || r.state == ActivityState.PAUSING) {
r.setSleeping(true);
@@ -1800,6 +1803,15 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY,
"Skipping: already visible at " + r);
if (r.state == STOPPED) {
// In this case the activity is visible, but in the stopped state.
// This sometimes happens if the activity is behind the lockscreen.
// Restart the activity to the paused or resumed state since we want
// it to be in the visible state now.
makeVisibleAndRestartIfNeeded(starting, configChanges, isTop,
resumeNextActivity, r);
}
if (r.handleAlreadyVisible()) {
resumeNextActivity = false;
}

View File

@@ -1477,11 +1477,12 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
stack.minimalResumeActivityLocked(r);
} else {
// This activity is not starting in the resumed state... which should look like we asked
// it to pause+stop (but remain visible), and it has done so and reported back the
// it to resume+pause (but remain visible), and it has done so and reported back the
// current icicle and other state.
if (DEBUG_STATES) Slog.v(TAG_STATES,
"Moving to PAUSED: " + r + " (starting in paused state)");
r.state = PAUSED;
r.stopped = false;
}
// Launch the new version setup screen if needed. We do this -after-
@@ -3089,6 +3090,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
}
}
mGoingToSleepActivities.clear();
ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS);
}
void activitySleptLocked(ActivityRecord r) {