From 6363392858134b9553aa04cf5acd5d861ce9171e Mon Sep 17 00:00:00 2001 From: maxli Date: Thu, 21 Mar 2024 11:40:29 +0800 Subject: [PATCH] fix(android): remove ImageDataHolder recycle --- .../component/image/ImageDataHolder.java | 33 ++----------------- .../renderer/component/image/ImageLoader.java | 7 +--- 2 files changed, 3 insertions(+), 37 deletions(-) diff --git a/renderer/native/android/src/main/java/com/tencent/renderer/component/image/ImageDataHolder.java b/renderer/native/android/src/main/java/com/tencent/renderer/component/image/ImageDataHolder.java index b4b2d40e03f..73fd8dec0e2 100644 --- a/renderer/native/android/src/main/java/com/tencent/renderer/component/image/ImageDataHolder.java +++ b/renderer/native/android/src/main/java/com/tencent/renderer/component/image/ImageDataHolder.java @@ -75,7 +75,6 @@ public class ImageDataHolder extends ImageRecycleObject implements ImageDataSupp private Bitmap mBitmap; @Nullable private BitmapFactory.Options mOptions; - private final AtomicInteger mRefCount = new AtomicInteger(0); public ImageDataHolder(@NonNull String source) { init(source, null, 0, 0); @@ -129,13 +128,12 @@ public void recycle() { @Override public void attached() { - mRefCount.incrementAndGet(); + } @Override public void detached() { - mRefCount.decrementAndGet(); - clear(); + } @Override @@ -146,33 +144,6 @@ public void cached() { @Override public void evicted() { resetStateFlag(FLAG_CACHED); - clear(); - } - - private void clear() { - if (mRefCount.get() > 0) { - return; - } - if (mDrawable instanceof Animatable && ((Animatable) mDrawable).isRunning()) { - ((Animatable) mDrawable).stop(); - } - if (checkStateFlag(FLAG_CACHED)) { - return; - } - if (mBitmap != null) { - if (checkStateFlag(FLAG_RECYCLABLE)) { - // If the bitmap is created locally, we need to manage its life cycle ourselves. - mBitmap.recycle(); - } - mBitmap = null; - } - mGifMovie = null; - mDrawable = null; - mOptions = null; - mSource = null; - mKey = null; - mStateFlags = 0; - recycle(); } @Override diff --git a/renderer/native/android/src/main/java/com/tencent/renderer/component/image/ImageLoader.java b/renderer/native/android/src/main/java/com/tencent/renderer/component/image/ImageLoader.java index 97707e91424..28ccb2308be 100644 --- a/renderer/native/android/src/main/java/com/tencent/renderer/component/image/ImageLoader.java +++ b/renderer/native/android/src/main/java/com/tencent/renderer/component/image/ImageLoader.java @@ -105,12 +105,7 @@ private void handleResourceData(@NonNull String url, @NonNull final ImageDataKey byte[] bytes = dataHolder.getBytes(); if (dataHolder.resultCode == ResourceDataHolder.RESOURCE_LOAD_SUCCESS_CODE && bytes != null) { - imageHolder = ImageDataHolder.obtain(); - if (imageHolder != null) { - imageHolder.init(url, urlKey, width, height); - } else { - imageHolder = new ImageDataHolder(url, urlKey, width, height); - } + imageHolder = new ImageDataHolder(url, urlKey, width, height); try { imageHolder.decodeImageData(bytes, initProps, mImageDecoderAdapter); // Should check the request data returned from the host, if the data is