feat:使用glide解码正文图片

This commit is contained in:
Xwite
2022-04-11 20:04:16 +08:00
parent cb4cd4fd1e
commit 9c5fdfe46c
2 changed files with 3 additions and 51 deletions
@@ -55,7 +55,6 @@ object ReadBook : CoroutineScope by MainScope() {
callBack?.upMenuView() callBack?.upMenuView()
callBack?.upPageAnim() callBack?.upPageAnim()
upWebBook(book) upWebBook(book)
ImageProvider.clearAllCache()
synchronized(this) { synchronized(this) {
loadingChapters.clear() loadingChapters.clear()
} }
@@ -207,7 +206,6 @@ object ReadBook : CoroutineScope by MainScope() {
} }
upReadTime() upReadTime()
preDownload() preDownload()
ImageProvider.clearOut(durChapterIndex)
} }
/** /**
@@ -4,32 +4,17 @@ import android.graphics.Bitmap
import io.legado.app.data.entities.Book import io.legado.app.data.entities.Book
import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.BookSource
import io.legado.app.help.BookHelp import io.legado.app.help.BookHelp
import io.legado.app.help.glide.ImageLoader
import io.legado.app.model.localBook.EpubFile import io.legado.app.model.localBook.EpubFile
import io.legado.app.utils.BitmapUtils import io.legado.app.utils.BitmapUtils
import io.legado.app.utils.FileUtils import io.legado.app.utils.FileUtils
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import splitties.init.appCtx
import java.io.FileOutputStream import java.io.FileOutputStream
import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentHashMap
object ImageProvider { object ImageProvider {
private val cache = ConcurrentHashMap<Int, ConcurrentHashMap<String, Bitmap>>()
@Synchronized
fun getCache(chapterIndex: Int, src: String): Bitmap? {
return cache[chapterIndex]?.get(src)
}
@Synchronized
fun setCache(chapterIndex: Int, src: String, bitmap: Bitmap) {
var indexCache = cache[chapterIndex]
if (indexCache == null) {
indexCache = ConcurrentHashMap()
cache[chapterIndex] = indexCache
}
indexCache[src] = bitmap
}
fun getImage( fun getImage(
book: Book, book: Book,
chapterIndex: Int, chapterIndex: Int,
@@ -37,9 +22,6 @@ object ImageProvider {
bookSource: BookSource?, bookSource: BookSource?,
onUi: Boolean = false, onUi: Boolean = false,
): Bitmap? { ): Bitmap? {
getCache(chapterIndex, src)?.let {
return it
}
val vFile = BookHelp.getImage(book, src) val vFile = BookHelp.getImage(book, src)
if (!vFile.exists()) { if (!vFile.exists()) {
if (book.isEpub()) { if (book.isEpub()) {
@@ -56,38 +38,10 @@ object ImageProvider {
} }
} }
return try { return try {
val bitmap = BitmapUtils.decodeBitmap( ImageLoader.loadBitmap(appCtx, vFile.absolutePath).submit().get()
vFile.absolutePath,
ChapterProvider.visibleWidth,
ChapterProvider.visibleHeight
)
setCache(chapterIndex, src, bitmap)
bitmap
} catch (e: Exception) { } catch (e: Exception) {
null null
} }
} }
@Synchronized
fun clearAllCache() {
cache.forEach { indexCache ->
indexCache.value.forEach {
it.value.recycle()
}
}
cache.clear()
}
@Synchronized
fun clearOut(chapterIndex: Int) {
cache.forEach { indexCache ->
if (indexCache.key !in chapterIndex - 1..chapterIndex + 1) {
indexCache.value.forEach {
it.value.recycle()
}
cache.remove(indexCache.key)
}
}
}
} }