diff options
| -rw-r--r-- | core/java/android/animation/ValueAnimator.java | 15 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/animation/ValueAnimatorTests.java | 7 |
2 files changed, 17 insertions, 5 deletions
diff --git a/core/java/android/animation/ValueAnimator.java b/core/java/android/animation/ValueAnimator.java index e721de96540f..5ab2c1d491d7 100644 --- a/core/java/android/animation/ValueAnimator.java +++ b/core/java/android/animation/ValueAnimator.java @@ -1029,8 +1029,16 @@ public class ValueAnimator extends Animator implements AnimationHandler.Animatio @Override public void resume() { - if (mPaused) { + if (Looper.myLooper() == null) { + throw new AndroidRuntimeException("Animators may only be resumed from the same " + + "thread that the animator was started on"); + } + if (mPaused && !mResumed) { mResumed = true; + if (mPauseTime > 0) { + AnimationHandler handler = AnimationHandler.getInstance(); + handler.addAnimationFrameCallback(this, 0); + } } super.resume(); } @@ -1235,9 +1243,8 @@ public class ValueAnimator extends Animator implements AnimationHandler.Animatio } mLastFrameTime = frameTime; if (mPaused) { - if (mPauseTime < 0) { - mPauseTime = frameTime; - } + mPauseTime = frameTime; + handler.removeCallback(this); return; } else if (mResumed) { mResumed = false; diff --git a/core/tests/coretests/src/android/animation/ValueAnimatorTests.java b/core/tests/coretests/src/android/animation/ValueAnimatorTests.java index 998c72a9e9c8..c92863d93fda 100644 --- a/core/tests/coretests/src/android/animation/ValueAnimatorTests.java +++ b/core/tests/coretests/src/android/animation/ValueAnimatorTests.java @@ -328,7 +328,12 @@ public class ValueAnimatorTests extends ActivityInstrumentationTestCase2<BasicAn // Only a1's pause listener should be called. assertTrue(l1.pauseCalled); assertFalse(l1.resumeCalled); - a1.resume(); + runTestOnUiThread(new Runnable() { + @Override + public void run() { + a1.resume(); + } + }); Thread.sleep(a1.getTotalDuration()); |