Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b5066fe3 authored by Wale Ogunwale's avatar Wale Ogunwale
Browse files

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
parent 245e33a0
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -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*/);