Skip to content

Commit

Permalink
优化
Browse files Browse the repository at this point in the history
  • Loading branch information
821938089 committed Aug 3, 2024
1 parent 65410d5 commit 8b76f06
Showing 1 changed file with 19 additions and 7 deletions.
26 changes: 19 additions & 7 deletions app/src/main/java/io/legado/app/help/storage/Backup.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import io.legado.app.utils.*
import io.legado.app.utils.compress.ZipUtils
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.ensureActive
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import kotlinx.coroutines.withContext
import splitties.init.appCtx
import java.io.File
Expand All @@ -38,6 +40,8 @@ object Backup {
}
val zipFilePath = "${appCtx.externalFiles.absolutePath}${File.separator}tmp_backup.zip"

private val mutex = Mutex()

private val backupFileNames by lazy {
arrayOf(
"bookshelf.json",
Expand Down Expand Up @@ -74,15 +78,23 @@ object Backup {
}
}

fun autoBack(context: Context) {
private fun shouldBackup(): Boolean {
val lastBackup = LocalConfig.lastBackup
if (lastBackup + TimeUnit.DAYS.toMillis(1) < System.currentTimeMillis()) {
return lastBackup + TimeUnit.DAYS.toMillis(1) < System.currentTimeMillis()
}

fun autoBack(context: Context) {
if (shouldBackup()) {
Coroutine.async {
val backupZipFileName = getNowZipFileName()
if (!AppWebDav.hasBackUp(backupZipFileName)) {
backup(context, context.getPrefString(PreferKey.backupPath))
} else {
LocalConfig.lastBackup = System.currentTimeMillis()
mutex.withLock {
if (shouldBackup()) {
val backupZipFileName = getNowZipFileName()
if (!AppWebDav.hasBackUp(backupZipFileName)) {
backup(context, AppConfig.backupPath)
} else {
LocalConfig.lastBackup = System.currentTimeMillis()
}
}
}
}.onError {
AppLog.put("自动备份失败\n${it.localizedMessage}")
Expand Down

0 comments on commit 8b76f06

Please sign in to comment.