优化
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
package io.legado.app.help.glide
|
||||
|
||||
import android.graphics.Bitmap
|
||||
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool
|
||||
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPoolAdapter
|
||||
import com.bumptech.glide.load.engine.bitmap_recycle.LruBitmapPool
|
||||
import io.legado.app.help.globalExecutor
|
||||
|
||||
class AsyncRecycleBitmapPool(private val delegate: BitmapPool) : BitmapPool by delegate {
|
||||
|
||||
constructor(maxSize: Int) : this(
|
||||
if (maxSize > 0) {
|
||||
LruBitmapPool(maxSize.toLong())
|
||||
} else {
|
||||
BitmapPoolAdapter()
|
||||
}
|
||||
)
|
||||
|
||||
override fun put(bitmap: Bitmap) {
|
||||
globalExecutor.execute {
|
||||
delegate.put(bitmap)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import com.bumptech.glide.GlideBuilder
|
||||
import com.bumptech.glide.Registry
|
||||
import com.bumptech.glide.annotation.GlideModule
|
||||
import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory
|
||||
import com.bumptech.glide.load.engine.cache.MemorySizeCalculator
|
||||
import com.bumptech.glide.load.model.GlideUrl
|
||||
import com.bumptech.glide.module.AppGlideModule
|
||||
import java.io.InputStream
|
||||
@@ -30,6 +31,10 @@ class LegadoGlideModule : AppGlideModule() {
|
||||
|
||||
override fun applyOptions(context: Context, builder: GlideBuilder) {
|
||||
super.applyOptions(context, builder)
|
||||
val calculator = MemorySizeCalculator.Builder(context).build()
|
||||
val bitmapPool = AsyncRecycleBitmapPool(calculator.bitmapPoolSize)
|
||||
builder.setMemorySizeCalculator(calculator)
|
||||
builder.setBitmapPool(bitmapPool)
|
||||
builder.setDiskCache(InternalCacheDiskCacheFactory(context, 1024 * 1024 * 1000))
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,6 @@ import io.legado.app.base.adapter.RecyclerAdapter.Companion.TYPE_FOOTER_VIEW
|
||||
import io.legado.app.databinding.BookComicLoadingRvBinding
|
||||
import io.legado.app.databinding.BookComicRvBinding
|
||||
import io.legado.app.help.glide.progress.ProgressManager
|
||||
import io.legado.app.help.globalExecutor
|
||||
import io.legado.app.model.BookCover
|
||||
import io.legado.app.model.ReadManga
|
||||
import io.legado.app.ui.book.manga.config.MangaColorFilterConfig
|
||||
@@ -169,9 +168,7 @@ class MangaAdapter(private val context: Context) :
|
||||
vh.itemView.updateLayoutParams<ViewGroup.LayoutParams> {
|
||||
height = MATCH_PARENT
|
||||
}
|
||||
globalExecutor.execute {
|
||||
Glide.with(context).clear(vh.binding.image)
|
||||
}
|
||||
Glide.with(context).clear(vh.binding.image)
|
||||
if (vh.binding.image.tag is String) {
|
||||
ProgressManager.removeListener(vh.binding.image.tag as String)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user