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

Commit 371c4422 authored by Chong Zhang's avatar Chong Zhang
Browse files

Deliver new activity options after the activity is made visible

The return options need to be sent in makeVisibleIfNeeded() (where app
is made visible from invisible), in addition to handleAlreadyVisible().
We can't rely on getting a second ensureActivitiesVisibleLocked to
send the activity options.

bug: 28610520
Change-Id: I38a4fd4624daecddfe9ea49c87753b04b154bb82
parent 56e2aeba
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -1752,6 +1752,9 @@ final class ActivityStack {
                        }
                    } else if (r.visible) {
                        // If this activity is already visible, then there is nothing to do here.
                        if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY,
                                "Skipping: already visible at " + r);

                        if (handleAlreadyVisible(r)) {
                            resumeNextActivity = false;
                        }
@@ -1933,8 +1936,6 @@ final class ActivityStack {
            r.sleeping = false;
            r.app.pendingUiClean = true;
            r.app.thread.scheduleWindowVisibility(r.appToken, true);
            r.stopFreezingScreenLocked(false);

            // The activity may be waiting for stop, but that is no longer
            // appropriate for it.
            mStackSupervisor.mStoppingActivities.remove(r);
@@ -1944,10 +1945,10 @@ final class ActivityStack {
            // visible when it next restarts.
            Slog.w(TAG, "Exception thrown making visibile: " + r.intent.getComponent(), e);
        }
        handleAlreadyVisible(r);
    }

    private boolean handleAlreadyVisible(ActivityRecord r) {
        if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, "Skipping: already visible at " + r);
        r.stopFreezingScreenLocked(false);
        try {
            if (r.returningOptions != null) {