diff --git a/image/src/main/java/com/kylecorry/ceres/image/AsyncImageView.kt b/image/src/main/java/com/kylecorry/ceres/image/AsyncImageView.kt index 51ae497..0cde158 100644 --- a/image/src/main/java/com/kylecorry/ceres/image/AsyncImageView.kt +++ b/image/src/main/java/com/kylecorry/ceres/image/AsyncImageView.kt @@ -21,8 +21,6 @@ class AsyncImageView(context: Context, attrs: AttributeSet?) : AppCompatImageVie private var imageLoader: ControlledRunner = ControlledRunner() private var lastBitmap: Bitmap? = null - private var shouldClearBitmap = true - fun setImageBitmap(lifecycleOwner: LifecycleOwner, provider: suspend () -> Bitmap) { lifecycleOwner.lifecycle.removeObserver(this) lifecycleOwner.lifecycle.addObserver(this) @@ -38,54 +36,50 @@ class AsyncImageView(context: Context, attrs: AttributeSet?) : AppCompatImageVie } withContext(Dispatchers.Main) { if (lastBitmap?.isRecycled == false) { - shouldClearBitmap = false super.setImageBitmap(lastBitmap) - shouldClearBitmap = true } } } } } + fun recycleLastBitmap(clearView: Boolean = true) { + if (clearView){ + setImageDrawable(null) + } + lastBitmap?.recycle() + lastBitmap = null + } + override fun setImageBitmap(bm: Bitmap?) { imageLoader.cancel() super.setImageBitmap(bm) - tryClear() } override fun setImageDrawable(drawable: Drawable?) { imageLoader.cancel() super.setImageDrawable(drawable) - tryClear() } override fun setImageResource(resId: Int) { imageLoader.cancel() super.setImageResource(resId) - tryClear() } override fun setImageURI(uri: Uri?) { imageLoader.cancel() super.setImageURI(uri) - tryClear() } override fun setImageIcon(icon: Icon?) { imageLoader.cancel() super.setImageIcon(icon) - tryClear() } override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) { if (event == Lifecycle.Event.ON_DESTROY) { imageLoader.cancel() - } - } - - private fun tryClear(){ - if (shouldClearBitmap) { - lastBitmap?.recycle() + recycleLastBitmap(true) } } diff --git a/list/src/main/java/com/kylecorry/ceres/list/ListItem.kt b/list/src/main/java/com/kylecorry/ceres/list/ListItem.kt index fa7c623..b83e93f 100644 --- a/list/src/main/java/com/kylecorry/ceres/list/ListItem.kt +++ b/list/src/main/java/com/kylecorry/ceres/list/ListItem.kt @@ -11,7 +11,6 @@ import androidx.core.view.setPadding import androidx.lifecycle.LifecycleOwner import com.kylecorry.andromeda.core.system.Resources import com.kylecorry.andromeda.core.tryOrLog -import com.kylecorry.andromeda.core.tryOrNothing import com.kylecorry.andromeda.core.ui.Colors import com.kylecorry.andromeda.core.ui.setCompoundDrawables import com.kylecorry.ceres.image.AsyncImageView @@ -61,6 +60,9 @@ data class ResourceListIcon( override fun apply(image: ImageView) { image.isVisible = true image.setImageResource(id) + if (image is AsyncImageView){ + image.recycleLastBitmap(false) + } Colors.setImageColor(image, tint) image.scaleType = scaleType