У меня проблема с моим Glide Transformation
, кажется, garbage collected
он получает слишком часто. Я создаю и отображаю растровое изображение последовательно, хотя GlideTransformation
взял на себя использование BitmapPool
link и избегал этого. Как я могу его улучшить?
GlideTransformation
class GlideThumbnailTransformation(square: Int) : BitmapTransformation() {
private val x: Int = square % MAX_COLUMNS
private val y: Int = square / MAX_COLUMNS
override fun transform(pool: BitmapPool, toTransform: Bitmap, outWidth: Int, outHeight: Int): Bitmap {
val width = toTransform.width / MAX_COLUMNS
val height = toTransform.height / MAX_LINES
return Bitmap.createBitmap(toTransform, x * width, y * height, width, height)
}
override fun updateDiskCacheKey(messageDigest: MessageDigest) {
val data: ByteArray = ByteBuffer.allocate(8).putInt(x).putInt(y).array()
messageDigest.update(data)
}
override fun hashCode(): Int {
return (x.toString() + y.toString()).hashCode()
}
override fun equals(other: Any?): Boolean {
if (other !is GlideThumbnailTransformation) {
return false
}
return other.x == x && other.y == y
}
}
Как я его использую
Изменение квадрата значения, но я загружаю изображение таким же imageView
GlideApp.with(imageView).asBitmap()
.apply(glideOptions)
.load(thumbnailsUrl)
.override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
.apply(RequestOptions.bitmapTransform(GlideThumbnailTransformation(square)))
.into(imageView)