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

Commit 9b7a8272 authored by Wale Ogunwale's avatar Wale Ogunwale
Browse files

Don't ensure config for activity that is about to be invisible

We were relaunching an activity in the docked stack that is been
dismissed because we call ensure configuration on it due to the
resize of it been moved to the fullscreen stack. This isn't needed
as the activity is about to become invisible since it is been moved
to a stack that isn't visible.
We now ensuring the configuration if:
- The stack the activity is in shouldn't be visible.
- The activity is currently stopped or stopping.

Change-Id: I6adac6b11a0db4b100e623e4074e169660206567
Fixes: 37118176
Test: Activity in docked stack isn't relaunched when dismissed.
parent e812e7dc
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -97,6 +97,7 @@ import static com.android.server.am.ActivityStack.ActivityState.STOPPING;
import static com.android.server.am.ActivityStack.LAUNCH_TICK;
import static com.android.server.am.ActivityStack.LAUNCH_TICK_MSG;
import static com.android.server.am.ActivityStack.PAUSE_TIMEOUT_MSG;
import static com.android.server.am.ActivityStack.STACK_INVISIBLE;
import static com.android.server.am.ActivityStack.STOP_TIMEOUT_MSG;
import static com.android.server.am.EventLogTags.AM_ACTIVITY_FULLY_DRAWN_TIME;
import static com.android.server.am.EventLogTags.AM_ACTIVITY_LAUNCH_TIME;
@@ -2269,6 +2270,20 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
            return true;
        }

        // Skip updating configuration for activity that are stopping or stopped.
        if (state == STOPPING || state == STOPPED) {
            if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION,
                    "Skipping config check stopped or stopping: " + this);
            return true;
        }

        // Skip updating configuration for activity is a stack that shouldn't be visible.
        if (stack.shouldBeVisible(null /* starting */) == STACK_INVISIBLE) {
            if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION,
                    "Skipping config check invisible stack: " + this);
            return true;
        }

        if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION,
                "Ensuring correct configuration: " + this);