From db1634539756e5cbf54f86d955ddd85eea397cad Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Thu, 21 Nov 2024 22:34:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/api/controller/BookController.kt | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/io/legado/app/api/controller/BookController.kt b/app/src/main/java/io/legado/app/api/controller/BookController.kt index f17396e3e..f55ea24cf 100644 --- a/app/src/main/java/io/legado/app/api/controller/BookController.kt +++ b/app/src/main/java/io/legado/app/api/controller/BookController.kt @@ -1,5 +1,7 @@ package io.legado.app.api.controller +import android.graphics.Bitmap +import android.graphics.drawable.Drawable import androidx.core.graphics.drawable.toBitmap import com.bumptech.glide.Glide import io.legado.app.api.ReturnData @@ -29,6 +31,7 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.runBlocking import splitties.init.appCtx import java.io.File +import java.util.WeakHashMap import java.util.concurrent.TimeUnit object BookController { @@ -36,6 +39,7 @@ object BookController { private lateinit var book: Book private var bookSource: BookSource? = null private var bookUrl: String = "" + private val defaultCoverCache by lazy { WeakHashMap() } /** * 书架所有书籍 @@ -77,14 +81,20 @@ object BookController { } catch (e: Exception) { LogUtils.d("BookController", "Error getCover($startAt) $coverPath\n$e") try { - val defaultBitmap = Glide.with(appCtx) - .asBitmap() - .load(BookCover.defaultDrawable.toBitmap()) - .override(84, 112) - .centerCrop() - .submit() - .get(3, TimeUnit.SECONDS) - returnData.setData(defaultBitmap) + val cached = defaultCoverCache[BookCover.defaultDrawable] + if (cached == null) { + val defaultBitmap = Glide.with(appCtx) + .asBitmap() + .load(BookCover.defaultDrawable.toBitmap()) + .override(84, 112) + .centerCrop() + .submit() + .get(3, TimeUnit.SECONDS) + defaultCoverCache[BookCover.defaultDrawable] = defaultBitmap + returnData.setData(defaultBitmap) + } else { + returnData.setData(cached) + } } catch (e: Exception) { returnData.setErrorMsg(e.localizedMessage ?: "getCover error") }