Skip to content

Commit 19cb70f

Browse files
committed
feat: Implement view recycling
1 parent 091e948 commit 19cb70f

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

packages/react-native-nitro-image/android/src/main/java/com/margelo/nitro/image/HybridImageView.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@ import android.widget.ImageView
77
import androidx.annotation.Keep
88
import androidx.core.view.isVisible
99
import com.facebook.common.internal.DoNotStrip
10+
import com.margelo.nitro.views.RecyclableView
1011
import kotlinx.coroutines.CoroutineScope
1112
import kotlinx.coroutines.Dispatchers
1213
import kotlinx.coroutines.launch
1314

1415
@DoNotStrip
1516
@Keep
16-
class HybridImageView(context: Context): HybridNitroImageViewSpec() {
17+
class HybridImageView(context: Context): HybridNitroImageViewSpec(), RecyclableView {
1718
companion object {
1819
private const val TAG = "HybridImageView"
1920
}
@@ -48,6 +49,11 @@ class HybridImageView(context: Context): HybridNitroImageViewSpec() {
4849
field = value
4950
}
5051

52+
override fun prepareForRecycle() {
53+
onDisappear()
54+
imageView.setImageBitmap(null)
55+
}
56+
5157
private fun updateResizeMode() {
5258
imageView.scaleType = when (resizeMode) {
5359
ResizeMode.COVER -> ImageView.ScaleType.CENTER_CROP

packages/react-native-nitro-image/ios/HybridImageView.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,3 +110,11 @@ extension HybridImageView: ViewLifecycleDelegate {
110110
}
111111
}
112112

113+
// Implementation to allow view recycling
114+
extension HybridImageView: RecyclableView {
115+
func prepareForRecycle() {
116+
willHide()
117+
imageView.image = nil
118+
}
119+
}
120+

0 commit comments

Comments
 (0)