@@ -54,20 +54,28 @@ class TurboImageViewManager : SimpleViewManager<TurboImageView>(), LifecycleEven
5454
5555 override fun onAfterUpdateTransaction (view : TurboImageView ) {
5656 super .onAfterUpdateTransaction(view)
57- reloadImage(view)
57+ reloadImage(view, force = false )
5858 }
5959
6060 override fun onDropViewInstance (view : TurboImageView ) {
6161 super .onDropViewInstance(view)
62+ view.resetLoadSignature()
6263 view.dispose()
6364 }
6465
65- private fun reloadImage (view : TurboImageView ) {
66+ private fun reloadImage (view : TurboImageView , force : Boolean ) {
6667 val defaultCrossfade = if (view.thumbhashDrawable != null || view.blurhashDrawable != null ) {
6768 0
6869 } else {
6970 CrossfadeDrawable .DEFAULT_DURATION
7071 }
72+ val loadSignature = view.buildLoadSignature(defaultCrossfade)
73+
74+ if (! force && view.shouldSkipReload(loadSignature)) {
75+ return
76+ }
77+
78+ view.markLoadStarted(loadSignature)
7179
7280 val okHttpClient = OkHttpClient .Builder ()
7381 .addInterceptor(ProgressInterceptor (object : ProgressListener {
@@ -86,6 +94,7 @@ class TurboImageViewManager : SimpleViewManager<TurboImageView>(), LifecycleEven
8694 .build()
8795
8896 val imageLoader = Coil .imageLoader(view.context).newBuilder()
97+ .networkObserverEnabled(false )
8998 .respectCacheHeaders(view.cachePolicy == " urlCache" )
9099 .okHttpClient(okHttpClient)
91100 .build()
@@ -97,7 +106,7 @@ class TurboImageViewManager : SimpleViewManager<TurboImageView>(), LifecycleEven
97106 diskCacheKey(it)
98107 }
99108 view.allowHardware?.let { allowHardware(it) }
100- listener(TurboImageListener (view))
109+ listener(TurboImageListener (view, loadSignature ))
101110 view.format?.let {
102111 when (it) {
103112 " svg" -> {
@@ -253,16 +262,19 @@ class TurboImageViewManager : SimpleViewManager<TurboImageView>(), LifecycleEven
253262
254263 override fun onHostResume () {
255264 if (isInBackground) {
256- reloadImage(imageView)
265+ reloadImage(imageView, force = true )
266+ isInBackground = false
257267 }
258268 }
259269
260270 override fun onHostPause () {
271+ imageView.resetLoadSignature()
261272 imageView.dispose()
262273 isInBackground = true
263274 }
264275
265276 override fun onHostDestroy () {
277+ imageView.resetLoadSignature()
266278 imageView.dispose()
267279 }
268280}
0 commit comments