Do not animate moving to rest state on CHANGE_ACTIVE_SCREEN.

Fix: 259380717
Test: manual
Change-Id: Icec103b26603290c7998977fa9c4d89132620a9d
This commit is contained in:
Pat Manning
2022-12-20 13:52:38 +00:00
parent 742294305f
commit cc31ba5360
2 changed files with 10 additions and 4 deletions

View File

@@ -96,7 +96,6 @@ import com.android.launcher3.logging.StatsLogManager.StatsLogger;
import com.android.launcher3.model.BgDataModel.FixedContainerItems;
import com.android.launcher3.model.WellbeingModel;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.model.data.WorkspaceItemInfo;
import com.android.launcher3.popup.SystemShortcut;
import com.android.launcher3.proxy.ProxyActivityStarter;
import com.android.launcher3.proxy.StartActivityParams;
@@ -920,7 +919,11 @@ public class QuickstepLauncher extends Launcher {
// When changing screens, force moving to rest state similar to StatefulActivity.onStop, as
// StatefulActivity isn't called consistently.
if ((flags & CHANGE_ACTIVE_SCREEN) != 0) {
getStateManager().moveToRestState();
// Do not animate moving to rest state, as it can clash with Launcher#onIdpChanged
// where reapplyUi calls StateManager's reapplyState during the state change animation,
// and cancel the state change unexpectedly. The screen will be off during screen
// transition, hiding the unanimated transition.
getStateManager().moveToRestState(/* isAnimated = */false);
}
if ((flags & CHANGE_NAVIGATION_MODE) != 0) {

View File

@@ -342,7 +342,6 @@ public class StateManager<STATE_TYPE extends BaseState<STATE_TYPE>> {
public void onAnimationSuccess(Animator animator) {
onStateTransitionEnd(state);
}
};
}
@@ -377,12 +376,16 @@ public class StateManager<STATE_TYPE extends BaseState<STATE_TYPE>> {
}
public void moveToRestState() {
moveToRestState(shouldAnimateStateChange());
}
public void moveToRestState(boolean isAnimated) {
if (mConfig.currentAnimation != null && mConfig.userControlled) {
// The user is doing something. Lets not mess it up
return;
}
if (mState.shouldDisableRestore()) {
goToState(getRestState());
goToState(getRestState(), isAnimated);
// Reset history
mLastStableState = mBaseState;
}