|
|
@ -35,6 +35,7 @@ object ImageProvider { |
|
|
|
private val cacheSize = |
|
|
|
private val cacheSize = |
|
|
|
max(50 * M, min(100 * M, (Runtime.getRuntime().maxMemory() / 8).toInt())) |
|
|
|
max(50 * M, min(100 * M, (Runtime.getRuntime().maxMemory() / 8).toInt())) |
|
|
|
val bitmapLruCache = object : LruCache<String, Bitmap>(cacheSize) { |
|
|
|
val bitmapLruCache = object : LruCache<String, Bitmap>(cacheSize) { |
|
|
|
|
|
|
|
|
|
|
|
override fun sizeOf(key: String, bitmap: Bitmap): Int { |
|
|
|
override fun sizeOf(key: String, bitmap: Bitmap): Int { |
|
|
|
return bitmap.byteCount |
|
|
|
return bitmap.byteCount |
|
|
|
} |
|
|
|
} |
|
|
@ -45,9 +46,11 @@ object ImageProvider { |
|
|
|
oldBitmap: Bitmap, |
|
|
|
oldBitmap: Bitmap, |
|
|
|
newBitmap: Bitmap? |
|
|
|
newBitmap: Bitmap? |
|
|
|
) { |
|
|
|
) { |
|
|
|
oldBitmap.recycle() |
|
|
|
if (oldBitmap != errorBitmap) { |
|
|
|
putDebug("ImageProvider: trigger bitmap recycle. URI: $key") |
|
|
|
oldBitmap.recycle() |
|
|
|
putDebug("ImageProvider : cacheUsage ${size()}bytes / ${maxSize()}bytes") |
|
|
|
putDebug("ImageProvider: trigger bitmap recycle. URI: $key") |
|
|
|
|
|
|
|
putDebug("ImageProvider : cacheUsage ${size()}bytes / ${maxSize()}bytes") |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -121,6 +124,8 @@ object ImageProvider { |
|
|
|
bitmapLruCache.put(src, bitmap) |
|
|
|
bitmapLruCache.put(src, bitmap) |
|
|
|
bitmap |
|
|
|
bitmap |
|
|
|
}.onFailure { |
|
|
|
}.onFailure { |
|
|
|
|
|
|
|
//错误图片占位,防止重复获取 |
|
|
|
|
|
|
|
bitmapLruCache.put(src, errorBitmap) |
|
|
|
putDebug( |
|
|
|
putDebug( |
|
|
|
"ImageProvider: decode bitmap failed. path: ${vFile.absolutePath}\n$it", |
|
|
|
"ImageProvider: decode bitmap failed. path: ${vFile.absolutePath}\n$it", |
|
|
|
it |
|
|
|
it |
|
|
|