优化
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.Registry
|
||||||
import com.bumptech.glide.annotation.GlideModule
|
import com.bumptech.glide.annotation.GlideModule
|
||||||
import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory
|
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.load.model.GlideUrl
|
||||||
import com.bumptech.glide.module.AppGlideModule
|
import com.bumptech.glide.module.AppGlideModule
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
@@ -30,6 +31,10 @@ class LegadoGlideModule : AppGlideModule() {
|
|||||||
|
|
||||||
override fun applyOptions(context: Context, builder: GlideBuilder) {
|
override fun applyOptions(context: Context, builder: GlideBuilder) {
|
||||||
super.applyOptions(context, builder)
|
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))
|
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.BookComicLoadingRvBinding
|
||||||
import io.legado.app.databinding.BookComicRvBinding
|
import io.legado.app.databinding.BookComicRvBinding
|
||||||
import io.legado.app.help.glide.progress.ProgressManager
|
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.BookCover
|
||||||
import io.legado.app.model.ReadManga
|
import io.legado.app.model.ReadManga
|
||||||
import io.legado.app.ui.book.manga.config.MangaColorFilterConfig
|
import io.legado.app.ui.book.manga.config.MangaColorFilterConfig
|
||||||
@@ -169,9 +168,7 @@ class MangaAdapter(private val context: Context) :
|
|||||||
vh.itemView.updateLayoutParams<ViewGroup.LayoutParams> {
|
vh.itemView.updateLayoutParams<ViewGroup.LayoutParams> {
|
||||||
height = MATCH_PARENT
|
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) {
|
if (vh.binding.image.tag is String) {
|
||||||
ProgressManager.removeListener(vh.binding.image.tag as String)
|
ProgressManager.removeListener(vh.binding.image.tag as String)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user