diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index 8d07336451175..89a5d72a3ca48 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -2090,6 +2090,15 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, private final Runnable mKeyguardGoingAwayRunnable = new Runnable() { @Override public void run() { + // If the keyguard is already going away, or it's about to because we are going to + // trigger the going-away remote animation to show the surface behind, don't do it + // again. That will cause the current animation to be cancelled unnecessarily. + if (mKeyguardStateController.isKeyguardGoingAway() + || mSurfaceBehindRemoteAnimationRequested + || mSurfaceBehindRemoteAnimationRunning) { + return; + } + Trace.beginSection("KeyguardViewMediator.mKeyGuardGoingAwayRunnable"); if (DEBUG) Log.d(TAG, "keyguardGoingAway"); mKeyguardViewControllerLazy.get().keyguardGoingAway(); @@ -2451,9 +2460,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, if (mSurfaceBehindRemoteAnimationFinishedCallback != null) { try { - if (!cancelled) { - mSurfaceBehindRemoteAnimationFinishedCallback.onAnimationFinished(); - } + mSurfaceBehindRemoteAnimationFinishedCallback.onAnimationFinished(); mSurfaceBehindRemoteAnimationFinishedCallback = null; } catch (RemoteException e) { e.printStackTrace();