Save activity state before stopping acitivity when device sleeps

Makes it consistent with the regular stop code path and allows
for the activity to be relaunched with the right state if a
relaunch happens after stop due to sleep.

Bug: 30241363
Change-Id: I92edfe6e0e3f5c7ce3b56d49df31e601a798cd4f
This commit is contained in:
Wale Ogunwale
2016-09-21 07:33:43 -07:00
parent 245e33a0b1
commit b5066fe307

View File

@@ -3799,7 +3799,7 @@ public final class ActivityThread {
* than our client -- for the server, stop means to save state and give
* it the result when it is done, but the window may still be visible.
* For the client, we want to call onStop()/onStart() to indicate when
* the activity's UI visibillity changes.
* the activity's UI visibility changes.
*/
private void performStopActivityInner(ActivityClientRecord r,
StopInfo info, boolean keepShown, boolean saveState, String reason) {
@@ -3973,6 +3973,9 @@ public final class ActivityThread {
mSomeActivitiesChanged = true;
}
// TODO: This method should be changed to use {@link #performStopActivityInner} to perform to
// stop operation on the activity to reduce code duplication and the chance of fixing a bug in
// one place and missing the other.
private void handleSleeping(IBinder token, boolean sleeping) {
ActivityClientRecord r = mActivities.get(token);
@@ -3983,6 +3986,10 @@ public final class ActivityThread {
if (sleeping) {
if (!r.stopped && !r.isPreHoneycomb()) {
if (!r.activity.mFinished && r.state == null) {
callCallActivityOnSaveInstanceState(r);
}
try {
// Now we are idle.
r.activity.performStop(false /*preserveWindow*/);