From 5e9eb6f0be35a623d58b6bb6756047af4f3c4efb Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Tue, 6 Feb 2024 12:54:13 +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/base/adapter/RecyclerAdapter.kt | 22 +++++++++---------- .../style1/books/BaseBooksAdapter.kt | 4 ++-- .../style1/books/BooksAdapterList.kt | 4 ++-- .../io/legado/app/ui/widget/text/BadgeView.kt | 4 ++++ .../main/java/io/legado/app/utils/LogUtils.kt | 5 +++-- 5 files changed, 22 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/io/legado/app/base/adapter/RecyclerAdapter.kt b/app/src/main/java/io/legado/app/base/adapter/RecyclerAdapter.kt index 4a9a353db..3ace54565 100644 --- a/app/src/main/java/io/legado/app/base/adapter/RecyclerAdapter.kt +++ b/app/src/main/java/io/legado/app/base/adapter/RecyclerAdapter.kt @@ -5,16 +5,15 @@ import android.content.Context import android.util.SparseArray import android.view.LayoutInflater import android.view.ViewGroup -import androidx.core.os.postDelayed import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.viewbinding.ViewBinding import io.legado.app.help.coroutine.Coroutine import io.legado.app.utils.buildMainHandler -import kotlinx.coroutines.ensureActive +import kotlinx.coroutines.withTimeoutOrNull import splitties.views.onLongClick -import java.util.* +import java.util.Collections /** * Created by Invincible on 2017/11/24. @@ -152,9 +151,16 @@ abstract class RecyclerAdapter(protected val context: Co } diffJob?.cancel() diffJob = Coroutine.async { - val diffResult = DiffUtil.calculateDiff(callback) - ensureActive() + val diffResult = if (skipDiff) withTimeoutOrNull(500L) { + DiffUtil.calculateDiff(callback) + } else { + DiffUtil.calculateDiff(callback) + } handler.post { + if (diffResult == null) { + setItems(items) + return@post + } if (this@RecyclerAdapter.items.isNotEmpty()) { this@RecyclerAdapter.items.clear() } @@ -165,12 +171,6 @@ abstract class RecyclerAdapter(protected val context: Co onCurrentListChanged() } } - if (skipDiff) handler.postDelayed(500) { - if (diffJob?.isCompleted == false) { - diffJob?.cancel() - setItems(items) - } - } } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BaseBooksAdapter.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BaseBooksAdapter.kt index cae7fb740..14d888884 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BaseBooksAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BaseBooksAdapter.kt @@ -10,8 +10,8 @@ import io.legado.app.data.entities.Book abstract class BaseBooksAdapter(context: Context) : DiffRecyclerAdapter(context) { - override val diffItemCallback: DiffUtil.ItemCallback - get() = object : DiffUtil.ItemCallback() { + override val diffItemCallback: DiffUtil.ItemCallback = + object : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: Book, newItem: Book): Boolean { return oldItem.name == newItem.name diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksAdapterList.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksAdapterList.kt index 83b83e21b..0cc9358ff 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksAdapterList.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksAdapterList.kt @@ -40,12 +40,12 @@ class BooksAdapterList( upRefresh(binding, item) upLastUpdateTime(binding, item) } else { - tvRead.text = item.durChapterTitle - tvLast.text = item.latestChapterTitle bundle.keySet().forEach { when (it) { "name" -> tvName.text = item.name "author" -> tvAuthor.text = item.author + "dur" -> tvRead.text = item.durChapterTitle + "last" -> tvLast.text = item.latestChapterTitle "cover" -> ivCover.load( item.getDisplayCover(), item.name, diff --git a/app/src/main/java/io/legado/app/ui/widget/text/BadgeView.kt b/app/src/main/java/io/legado/app/ui/widget/text/BadgeView.kt index c198a8f4b..f9e390644 100644 --- a/app/src/main/java/io/legado/app/ui/widget/text/BadgeView.kt +++ b/app/src/main/java/io/legado/app/ui/widget/text/BadgeView.kt @@ -106,6 +106,10 @@ class BadgeView @JvmOverloads constructor( } override fun setBackgroundColor(color: Int) { + val background = background + if (background is ShapeDrawable && background.paint.color == color) { + return + } setBackground(radius, color) } diff --git a/app/src/main/java/io/legado/app/utils/LogUtils.kt b/app/src/main/java/io/legado/app/utils/LogUtils.kt index 73b9fbd2a..7ad1c2733 100644 --- a/app/src/main/java/io/legado/app/utils/LogUtils.kt +++ b/app/src/main/java/io/legado/app/utils/LogUtils.kt @@ -7,7 +7,7 @@ import io.legado.app.BuildConfig import io.legado.app.help.config.AppConfig import splitties.init.appCtx import java.text.SimpleDateFormat -import java.util.* +import java.util.Date import java.util.logging.FileHandler import java.util.logging.Level import java.util.logging.LogRecord @@ -40,7 +40,8 @@ object LogUtils { private val fileHandler by lazy { val root = appCtx.externalCacheDir ?: return@lazy null val logFolder = FileUtils.createFolderIfNotExist(root, "logs") - val logPath = FileUtils.getPath(root = logFolder, "appLog") + val date = getCurrentDateStr(TIME_PATTERN) + val logPath = FileUtils.getPath(root = logFolder, "appLog-$date.txt") FileHandler(logPath, 10240, 10).apply { formatter = object : java.util.logging.Formatter() { override fun format(record: LogRecord): String {