Skip to content
This repository was archived by the owner on Jan 6, 2024. It is now read-only.

Commit ca9c4cc

Browse files
committed
Attempt to clean up bitmap
1 parent d1ebaaf commit ca9c4cc

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20'
99
}
1010
ext.groupId = 'com.kylecorry.ceres'
11-
ext.versionName = '0.3.2'
11+
ext.versionName = '0.3.3-beta01'
1212
ext.andromedaVersion = '5.0.0-beta26'
1313
ext.targetVersion = 33
1414
ext.compileVersion = 33

image/src/main/java/com/kylecorry/ceres/image/AsyncImageView.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ class AsyncImageView(context: Context, attrs: AttributeSet?) : AppCompatImageVie
2121
private var imageLoader: ControlledRunner<Unit> = ControlledRunner()
2222
private var lastBitmap: Bitmap? = null
2323

24+
private var shouldClearBitmap = true
25+
2426
fun setImageBitmap(lifecycleOwner: LifecycleOwner, provider: suspend () -> Bitmap) {
2527
lifecycleOwner.lifecycle.removeObserver(this)
2628
lifecycleOwner.lifecycle.addObserver(this)
@@ -36,7 +38,9 @@ class AsyncImageView(context: Context, attrs: AttributeSet?) : AppCompatImageVie
3638
}
3739
withContext(Dispatchers.Main) {
3840
if (lastBitmap?.isRecycled == false) {
41+
shouldClearBitmap = false
3942
super.setImageBitmap(lastBitmap)
43+
shouldClearBitmap = true
4044
}
4145
}
4246
}
@@ -46,26 +50,31 @@ class AsyncImageView(context: Context, attrs: AttributeSet?) : AppCompatImageVie
4650
override fun setImageBitmap(bm: Bitmap?) {
4751
imageLoader.cancel()
4852
super.setImageBitmap(bm)
53+
tryClear()
4954
}
5055

5156
override fun setImageDrawable(drawable: Drawable?) {
5257
imageLoader.cancel()
5358
super.setImageDrawable(drawable)
59+
tryClear()
5460
}
5561

5662
override fun setImageResource(resId: Int) {
5763
imageLoader.cancel()
5864
super.setImageResource(resId)
65+
tryClear()
5966
}
6067

6168
override fun setImageURI(uri: Uri?) {
6269
imageLoader.cancel()
6370
super.setImageURI(uri)
71+
tryClear()
6472
}
6573

6674
override fun setImageIcon(icon: Icon?) {
6775
imageLoader.cancel()
6876
super.setImageIcon(icon)
77+
tryClear()
6978
}
7079

7180
override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
@@ -74,4 +83,10 @@ class AsyncImageView(context: Context, attrs: AttributeSet?) : AppCompatImageVie
7483
}
7584
}
7685

86+
private fun tryClear(){
87+
if (shouldClearBitmap) {
88+
lastBitmap?.recycle()
89+
}
90+
}
91+
7792
}

0 commit comments

Comments
 (0)