mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
修复图片加载错误时卡顿的bug
This commit is contained in:
@@ -35,6 +35,7 @@ object ImageProvider {
|
||||
private val cacheSize =
|
||||
max(50 * M, min(100 * M, (Runtime.getRuntime().maxMemory() / 8).toInt()))
|
||||
val bitmapLruCache = object : LruCache<String, Bitmap>(cacheSize) {
|
||||
|
||||
override fun sizeOf(key: String, bitmap: Bitmap): Int {
|
||||
return bitmap.byteCount
|
||||
}
|
||||
@@ -45,9 +46,11 @@ object ImageProvider {
|
||||
oldBitmap: Bitmap,
|
||||
newBitmap: Bitmap?
|
||||
) {
|
||||
oldBitmap.recycle()
|
||||
putDebug("ImageProvider: trigger bitmap recycle. URI: $key")
|
||||
putDebug("ImageProvider : cacheUsage ${size()}bytes / ${maxSize()}bytes")
|
||||
if (oldBitmap != errorBitmap) {
|
||||
oldBitmap.recycle()
|
||||
putDebug("ImageProvider: trigger bitmap recycle. URI: $key")
|
||||
putDebug("ImageProvider : cacheUsage ${size()}bytes / ${maxSize()}bytes")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,6 +124,8 @@ object ImageProvider {
|
||||
bitmapLruCache.put(src, bitmap)
|
||||
bitmap
|
||||
}.onFailure {
|
||||
//错误图片占位,防止重复获取
|
||||
bitmapLruCache.put(src, errorBitmap)
|
||||
putDebug(
|
||||
"ImageProvider: decode bitmap failed. path: ${vFile.absolutePath}\n$it",
|
||||
it
|
||||
|
||||
Reference in New Issue
Block a user