Merge "Clone animators before running in StateListAnimator"
diff --git a/core/java/android/animation/StateListAnimator.java b/core/java/android/animation/StateListAnimator.java
index bc4843d..810f050 100644
--- a/core/java/android/animation/StateListAnimator.java
+++ b/core/java/android/animation/StateListAnimator.java
@@ -141,7 +141,7 @@
             return;
         }
         if (mLastMatch != null) {
-            cancel(mLastMatch);
+            cancel();
         }
         mLastMatch = match;
         if (match != null) {
@@ -151,13 +151,15 @@
 
     private void start(Tuple match) {
         match.mAnimator.setTarget(getTarget());
-        mRunningAnimator = match.mAnimator;
-        match.mAnimator.start();
+        mRunningAnimator = match.mAnimator.clone();
+        mRunningAnimator.start();
     }
 
-    private void cancel(Tuple lastMatch) {
-        lastMatch.mAnimator.cancel();
-        lastMatch.mAnimator.setTarget(null);
+    private void cancel() {
+        if (mRunningAnimator != null) {
+            mRunningAnimator.cancel();
+            mRunningAnimator = null;
+        }
     }
 
     /**