diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java b/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java index 8972e08a06..a09f776c5b 100644 --- a/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java +++ b/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java @@ -323,15 +323,15 @@ private void init(@Nullable AttributeSet attrs, @AttrRes int defStyleAttr) { @Override protected Parcelable onSaveInstanceState() { Parcelable superState = super.onSaveInstanceState(); - SavedState ss = new SavedState(superState); - ss.animationName = animationName; - ss.animationResId = animationResId; - ss.progress = lottieDrawable.getProgress(); - ss.isAnimating = lottieDrawable.isAnimatingOrWillAnimateOnVisible(); - ss.imageAssetsFolder = lottieDrawable.getImageAssetsFolder(); - ss.repeatMode = lottieDrawable.getRepeatMode(); - ss.repeatCount = lottieDrawable.getRepeatCount(); - return ss; + SavedState savedState = new SavedState(superState); + savedState.animationName = animationName; + savedState.animationResId = animationResId; + savedState.progress = lottieDrawable.getProgress(); + savedState.isAnimating = lottieDrawable.isAnimatingOrWillAnimateOnVisible(); + savedState.imageAssetsFolder = lottieDrawable.getImageAssetsFolder(); + savedState.repeatMode = lottieDrawable.getRepeatMode(); + savedState.repeatCount = lottieDrawable.getRepeatCount(); + return savedState; } @Override protected void onRestoreInstanceState(Parcelable state) { @@ -340,30 +340,30 @@ private void init(@Nullable AttributeSet attrs, @AttrRes int defStyleAttr) { return; } - SavedState ss = (SavedState) state; - super.onRestoreInstanceState(ss.getSuperState()); - animationName = ss.animationName; + SavedState savedState = (SavedState) state; + super.onRestoreInstanceState(savedState.getSuperState()); + animationName = savedState.animationName; if (!userActionsTaken.contains(UserActionTaken.SET_ANIMATION) && !TextUtils.isEmpty(animationName)) { setAnimation(animationName); } - animationResId = ss.animationResId; + animationResId = savedState.animationResId; if (!userActionsTaken.contains(UserActionTaken.SET_ANIMATION) && animationResId != 0) { setAnimation(animationResId); } if (!userActionsTaken.contains(UserActionTaken.SET_PROGRESS)) { - setProgressInternal(ss.progress, false); + setProgressInternal(savedState.progress, false); } - if (!userActionsTaken.contains(UserActionTaken.PLAY_OPTION) && ss.isAnimating) { + if (!userActionsTaken.contains(UserActionTaken.PLAY_OPTION) && savedState.isAnimating) { playAnimation(); } if (!userActionsTaken.contains(UserActionTaken.SET_IMAGE_ASSETS)) { - setImageAssetsFolder(ss.imageAssetsFolder); + setImageAssetsFolder(savedState.imageAssetsFolder); } if (!userActionsTaken.contains(UserActionTaken.SET_REPEAT_MODE)) { - setRepeatMode(ss.repeatMode); + setRepeatMode(savedState.repeatMode); } if (!userActionsTaken.contains(UserActionTaken.SET_REPEAT_COUNT)) { - setRepeatCount(ss.repeatCount); + setRepeatCount(savedState.repeatCount); } } @@ -632,10 +632,8 @@ public void setFallbackResource(@DrawableRes int fallbackResource) { } private void setCompositionTask(LottieTask compositionTask) { - LottieResult result = compositionTask.getResult(); - LottieDrawable lottieDrawable = this.lottieDrawable; - if (result != null && lottieDrawable == getDrawable() && lottieDrawable.getComposition() == result.getValue()) { - return; + if (shouldSkipSetComposition(compositionTask)) { + return; } userActionsTaken.add(UserActionTaken.SET_ANIMATION); clearComposition(); @@ -643,7 +641,16 @@ private void setCompositionTask(LottieTask compositionTask) { this.compositionTask = compositionTask .addListener(loadedListener) .addFailureListener(wrappedFailureListener); - } +} + +private boolean shouldSkipSetComposition(LottieTask compositionTask) { + LottieResult result = compositionTask.getResult(); + LottieDrawable lottieDrawable = this.lottieDrawable; + if (result == null) { + return false; + } + return lottieDrawable == getDrawable() && lottieDrawable.getComposition() == result.getValue(); +} private void cancelLoaderTask() { if (compositionTask != null) { diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java b/lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java index 57b723c95c..dd4a6d0a15 100644 --- a/lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java +++ b/lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java @@ -639,7 +639,8 @@ private static LottieResult fromZipStreamSyncInternal(@Nullab File tempFile = new File(context.getCacheDir(), fileName); try (FileOutputStream fos = new FileOutputStream(tempFile)) { try (OutputStream output = new FileOutputStream(tempFile)) { - byte[] buffer = new byte[4 * 1024]; + int four_kb_size = 4 * 1024; + byte[] buffer = new byte[four_kb_size]; int read; while ((read = inputStream.read(buffer)) != -1) { output.write(buffer, 0, read);