mirror of
https://github.com/gedoor/legado.git
synced 2024-07-06 23:47:49 +08:00
优化
This commit is contained in:
parent
cd8fe30880
commit
5e9eb6f0be
@ -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<ITEM, VB : ViewBinding>(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<ITEM, VB : ViewBinding>(protected val context: Co
|
||||
onCurrentListChanged()
|
||||
}
|
||||
}
|
||||
if (skipDiff) handler.postDelayed(500) {
|
||||
if (diffJob?.isCompleted == false) {
|
||||
diffJob?.cancel()
|
||||
setItems(items)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10,8 +10,8 @@ import io.legado.app.data.entities.Book
|
||||
abstract class BaseBooksAdapter<VB : ViewBinding>(context: Context) :
|
||||
DiffRecyclerAdapter<Book, VB>(context) {
|
||||
|
||||
override val diffItemCallback: DiffUtil.ItemCallback<Book>
|
||||
get() = object : DiffUtil.ItemCallback<Book>() {
|
||||
override val diffItemCallback: DiffUtil.ItemCallback<Book> =
|
||||
object : DiffUtil.ItemCallback<Book>() {
|
||||
|
||||
override fun areItemsTheSame(oldItem: Book, newItem: Book): Boolean {
|
||||
return oldItem.name == newItem.name
|
||||
|
@ -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,
|
||||
|
@ -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)
|
||||
}
|
||||
|
||||
|
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user