Fix NPE in ValueAnimator

- Reset mAnimationEndRequested to false in ValueAnimator#start(boolean)
  so that previously canceled animated (with a start delay) can be
  canceled again.
- In ObjectAnimator#animateValue(float) check if target == null
  regardless of mTarget == null since it's possible the target was
  explicitly set to null prior to the animator being cancelled.

Bug: 30190459
Change-Id: I6da55737df30a28f48355fc7a41ab91d05979deb
This commit is contained in:
Justin Klaassen
2016-07-22 19:30:03 -07:00
parent dd756c26e2
commit 543a7ed7af
2 changed files with 2 additions and 1 deletions

View File

@@ -977,7 +977,7 @@ public final class ObjectAnimator extends ValueAnimator {
@Override
void animateValue(float fraction) {
final Object target = getTarget();
if (mTarget != null && target == null) {
if (target == null) {
// We lost the target reference, cancel and clean up.
cancel();
return;

View File

@@ -982,6 +982,7 @@ public class ValueAnimator extends Animator implements AnimationHandler.Animatio
mStarted = true;
mPaused = false;
mRunning = false;
mAnimationEndRequested = false;
// Resets mLastFrameTime when start() is called, so that if the animation was running,
// calling start() would put the animation in the
// started-but-not-yet-reached-the-first-frame phase.