Loading services/core/java/com/android/server/wm/ActivityRecord.java +20 −2 Original line number Diff line number Diff line Loading @@ -5777,10 +5777,24 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } void onStartingWindowDrawn() { boolean wasTaskVisible = false; if (task != null) { mSplashScreenStyleEmpty = true; wasTaskVisible = task.getHasBeenVisible(); task.setHasBeenVisible(true); } // The transition may not be executed if the starting process hasn't attached. But if the // starting window is drawn, the transition can start earlier. Exclude finishing and bubble // because it may be a trampoline. if (!wasTaskVisible && mStartingData != null && !finishing && !mLaunchedFromBubble && !mDisplayContent.mAppTransition.isReady() && !mDisplayContent.mAppTransition.isRunning()) { // The pending transition state will be cleared after the transition is started, so // save the state for launching the client later (used by LaunchActivityItem). mStartingData.mIsTransitionForward = mDisplayContent.isNextTransitionForward(); mDisplayContent.executeAppTransition(); } } /** Called when the windows associated app window container are drawn. */ Loading Loading @@ -6493,6 +6507,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A || dc.mChangingContainers.contains(this)); } boolean isTransitionForward() { return (mStartingData != null && mStartingData.mIsTransitionForward) || mDisplayContent.isNextTransitionForward(); } private int getAnimationLayer() { // The leash is parented to the animation layer. We need to preserve the z-order by using // the prefix order index, but we boost if necessary. Loading Loading @@ -8094,8 +8113,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A preserveWindow); final ActivityLifecycleItem lifecycleItem; if (andResume) { lifecycleItem = ResumeActivityItem.obtain( mDisplayContent.isNextTransitionForward()); lifecycleItem = ResumeActivityItem.obtain(isTransitionForward()); } else { lifecycleItem = PauseActivityItem.obtain(); } Loading services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +3 −3 Original line number Diff line number Diff line Loading @@ -836,7 +836,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { final ClientTransaction clientTransaction = ClientTransaction.obtain( proc.getThread(), r.appToken); final DisplayContent dc = r.mDisplayContent; final boolean isTransitionForward = r.isTransitionForward(); clientTransaction.addCallback(LaunchActivityItem.obtain(new Intent(r.intent), System.identityHashCode(r), r.info, // TODO: Have this take the merged configuration instead of separate global Loading @@ -845,7 +845,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { mergedConfiguration.getOverrideConfiguration(), r.compat, r.launchedFromPackage, task.voiceInteractor, proc.getReportedProcState(), r.getSavedState(), r.getPersistentSavedState(), results, newIntents, r.takeOptions(), dc.isNextTransitionForward(), r.takeOptions(), isTransitionForward, proc.createProfilerInfoIfNeeded(), r.assistToken, activityClientController, r.createFixedRotationAdjustmentsIfNeeded(), r.shareableActivityToken, r.getLaunchedFromBubble())); Loading @@ -853,7 +853,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { // Set desired final state. final ActivityLifecycleItem lifecycleItem; if (andResume) { lifecycleItem = ResumeActivityItem.obtain(dc.isNextTransitionForward()); lifecycleItem = ResumeActivityItem.obtain(isTransitionForward); } else { lifecycleItem = PauseActivityItem.obtain(); } Loading services/core/java/com/android/server/wm/StartingData.java +6 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,12 @@ public abstract class StartingData { protected final WindowManagerService mService; protected final int mTypeParams; /** * Tell whether the launching activity should use * {@link android.view.WindowManager.LayoutParams#SOFT_INPUT_IS_FORWARD_NAVIGATION}. */ boolean mIsTransitionForward; protected StartingData(WindowManagerService service, int typeParams) { mService = service; mTypeParams = typeParams; Loading Loading
services/core/java/com/android/server/wm/ActivityRecord.java +20 −2 Original line number Diff line number Diff line Loading @@ -5777,10 +5777,24 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } void onStartingWindowDrawn() { boolean wasTaskVisible = false; if (task != null) { mSplashScreenStyleEmpty = true; wasTaskVisible = task.getHasBeenVisible(); task.setHasBeenVisible(true); } // The transition may not be executed if the starting process hasn't attached. But if the // starting window is drawn, the transition can start earlier. Exclude finishing and bubble // because it may be a trampoline. if (!wasTaskVisible && mStartingData != null && !finishing && !mLaunchedFromBubble && !mDisplayContent.mAppTransition.isReady() && !mDisplayContent.mAppTransition.isRunning()) { // The pending transition state will be cleared after the transition is started, so // save the state for launching the client later (used by LaunchActivityItem). mStartingData.mIsTransitionForward = mDisplayContent.isNextTransitionForward(); mDisplayContent.executeAppTransition(); } } /** Called when the windows associated app window container are drawn. */ Loading Loading @@ -6493,6 +6507,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A || dc.mChangingContainers.contains(this)); } boolean isTransitionForward() { return (mStartingData != null && mStartingData.mIsTransitionForward) || mDisplayContent.isNextTransitionForward(); } private int getAnimationLayer() { // The leash is parented to the animation layer. We need to preserve the z-order by using // the prefix order index, but we boost if necessary. Loading Loading @@ -8094,8 +8113,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A preserveWindow); final ActivityLifecycleItem lifecycleItem; if (andResume) { lifecycleItem = ResumeActivityItem.obtain( mDisplayContent.isNextTransitionForward()); lifecycleItem = ResumeActivityItem.obtain(isTransitionForward()); } else { lifecycleItem = PauseActivityItem.obtain(); } Loading
services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +3 −3 Original line number Diff line number Diff line Loading @@ -836,7 +836,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { final ClientTransaction clientTransaction = ClientTransaction.obtain( proc.getThread(), r.appToken); final DisplayContent dc = r.mDisplayContent; final boolean isTransitionForward = r.isTransitionForward(); clientTransaction.addCallback(LaunchActivityItem.obtain(new Intent(r.intent), System.identityHashCode(r), r.info, // TODO: Have this take the merged configuration instead of separate global Loading @@ -845,7 +845,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { mergedConfiguration.getOverrideConfiguration(), r.compat, r.launchedFromPackage, task.voiceInteractor, proc.getReportedProcState(), r.getSavedState(), r.getPersistentSavedState(), results, newIntents, r.takeOptions(), dc.isNextTransitionForward(), r.takeOptions(), isTransitionForward, proc.createProfilerInfoIfNeeded(), r.assistToken, activityClientController, r.createFixedRotationAdjustmentsIfNeeded(), r.shareableActivityToken, r.getLaunchedFromBubble())); Loading @@ -853,7 +853,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { // Set desired final state. final ActivityLifecycleItem lifecycleItem; if (andResume) { lifecycleItem = ResumeActivityItem.obtain(dc.isNextTransitionForward()); lifecycleItem = ResumeActivityItem.obtain(isTransitionForward); } else { lifecycleItem = PauseActivityItem.obtain(); } Loading
services/core/java/com/android/server/wm/StartingData.java +6 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,12 @@ public abstract class StartingData { protected final WindowManagerService mService; protected final int mTypeParams; /** * Tell whether the launching activity should use * {@link android.view.WindowManager.LayoutParams#SOFT_INPUT_IS_FORWARD_NAVIGATION}. */ boolean mIsTransitionForward; protected StartingData(WindowManagerService service, int typeParams) { mService = service; mTypeParams = typeParams; Loading