Android Проблема с GlideTransformation со сборщиком мусора - PullRequest
0 голосов
/ 20 июня 2020

У меня проблема с моим Glide Transformation, кажется, garbage collected он получает слишком часто. Я создаю и отображаю растровое изображение последовательно, хотя GlideTransformation взял на себя использование BitmapPool link и избегал этого. Как я могу его улучшить?

Profiler

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...