diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/provider/ImageProvider.kt b/app/src/main/java/io/legado/app/ui/book/read/page/provider/ImageProvider.kt index f5d8d9173..09dfeacfc 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/provider/ImageProvider.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/provider/ImageProvider.kt @@ -1,6 +1,10 @@ package io.legado.app.ui.book.read.page.provider import android.graphics.Bitmap +import com.bumptech.glide.load.engine.GlideException +import com.bumptech.glide.load.DataSource +import com.bumptech.glide.request.RequestListener +import com.bumptech.glide.request.target.Target import io.legado.app.data.entities.Book import io.legado.app.data.entities.BookSource import io.legado.app.help.BookHelp @@ -8,9 +12,11 @@ import io.legado.app.help.glide.ImageLoader import io.legado.app.model.localBook.EpubFile import io.legado.app.utils.BitmapUtils import io.legado.app.utils.FileUtils +import io.legado.app.R import kotlinx.coroutines.runBlocking import splitties.init.appCtx import java.io.FileOutputStream +import java.io.File import java.util.concurrent.ConcurrentHashMap object ImageProvider { @@ -37,10 +43,36 @@ object ImageProvider { } } } - return try { - ImageLoader.loadBitmap(appCtx, vFile.absolutePath).submit().get() - } catch (e: Exception) { - null + return ImageLoader.loadBitmap(appCtx, vFile.absolutePath) + .error(R.drawable.image_loading_error) + .listener(glideListener) + .submit() + .get() + } + + private val glideListener by lazy { + object : RequestListener { + + override fun onLoadFailed( + e: GlideException?, + model: Any?, + target: Target?, + isFirstResource: Boolean + ): Boolean { + File(model as String).delete() + return false + } + + override fun onResourceReady( + resource: Bitmap?, + model: Any?, + target: Target?, + dataSource: DataSource?, + isFirstResource: Boolean + ): Boolean { + return false + } + } } diff --git a/app/src/main/res/drawable/image_loading_error.jpg b/app/src/main/res/drawable/image_loading_error.jpg new file mode 100644 index 000000000..b4987a78a Binary files /dev/null and b/app/src/main/res/drawable/image_loading_error.jpg differ