diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index bfae632593fbb..b2976eca95908 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -17,6 +17,8 @@ package android.app; import static android.Manifest.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS; +import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; +import static android.app.WindowConfiguration.inMultiWindowMode; import static android.os.Process.myUid; import static java.lang.Character.MIN_VALUE; @@ -947,9 +949,8 @@ public class Activity extends ContextThemeWrapper /** @hide */ boolean mEnterAnimationComplete; - /** Track last dispatched multi-window and PiP mode to client, internal debug purpose **/ - private Boolean mLastDispatchedIsInMultiWindowMode; - private Boolean mLastDispatchedIsInPictureInPictureMode; + private boolean mIsInMultiWindowMode; + private boolean mIsInPictureInPictureMode; private final WindowControllerCallback mWindowControllerCallback = new WindowControllerCallback() { @@ -2748,7 +2749,7 @@ public class Activity extends ContextThemeWrapper * @return True if the activity is in multi-window mode. */ public boolean isInMultiWindowMode() { - return mLastDispatchedIsInMultiWindowMode == Boolean.TRUE; + return mIsInMultiWindowMode; } /** @@ -2791,7 +2792,7 @@ public class Activity extends ContextThemeWrapper * @return True if the activity is in picture-in-picture mode. */ public boolean isInPictureInPictureMode() { - return mLastDispatchedIsInPictureInPictureMode == Boolean.TRUE; + return mIsInPictureInPictureMode; } /** @@ -7142,10 +7143,10 @@ public class Activity extends ContextThemeWrapper writer.print(mResumed); writer.print(" mStopped="); writer.print(mStopped); writer.print(" mFinished="); writer.println(mFinished); - writer.print(innerPrefix); writer.print("mLastDispatchedIsInMultiWindowMode="); - writer.print(mLastDispatchedIsInMultiWindowMode); - writer.print(" mLastDispatchedIsInPictureInPictureMode="); - writer.println(mLastDispatchedIsInPictureInPictureMode); + writer.print(innerPrefix); writer.print("mIsInMultiWindowMode="); + writer.print(mIsInMultiWindowMode); + writer.print(" mIsInPictureInPictureMode="); + writer.println(mIsInPictureInPictureMode); writer.print(innerPrefix); writer.print("mChangingConfigurations="); writer.println(mChangingConfigurations); writer.print(innerPrefix); writer.print("mCurrentConfig="); @@ -7977,6 +7978,11 @@ public class Activity extends ContextThemeWrapper final void performCreate(Bundle icicle, PersistableBundle persistentState) { dispatchActivityPreCreated(icicle); mCanEnterPictureInPicture = true; + // initialize mIsInMultiWindowMode and mIsInPictureInPictureMode before onCreate + final int windowingMode = getResources().getConfiguration().windowConfiguration + .getWindowingMode(); + mIsInMultiWindowMode = inMultiWindowMode(windowingMode); + mIsInPictureInPictureMode = windowingMode == WINDOWING_MODE_PINNED; restoreHasCurrentPermissionRequest(icicle); if (persistentState != null) { onCreate(icicle, persistentState); @@ -8245,7 +8251,7 @@ public class Activity extends ContextThemeWrapper if (mWindow != null) { mWindow.onMultiWindowModeChanged(); } - mLastDispatchedIsInMultiWindowMode = isInMultiWindowMode; + mIsInMultiWindowMode = isInMultiWindowMode; onMultiWindowModeChanged(isInMultiWindowMode, newConfig); } @@ -8258,7 +8264,7 @@ public class Activity extends ContextThemeWrapper if (mWindow != null) { mWindow.onPictureInPictureModeChanged(isInPictureInPictureMode); } - mLastDispatchedIsInPictureInPictureMode = isInPictureInPictureMode; + mIsInPictureInPictureMode = isInPictureInPictureMode; onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig); }