优化
This commit is contained in:
@@ -18,6 +18,8 @@ import io.legado.app.utils.*
|
|||||||
import io.legado.app.utils.compress.ZipUtils
|
import io.legado.app.utils.compress.ZipUtils
|
||||||
import kotlinx.coroutines.Dispatchers.IO
|
import kotlinx.coroutines.Dispatchers.IO
|
||||||
import kotlinx.coroutines.ensureActive
|
import kotlinx.coroutines.ensureActive
|
||||||
|
import kotlinx.coroutines.sync.Mutex
|
||||||
|
import kotlinx.coroutines.sync.withLock
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import splitties.init.appCtx
|
import splitties.init.appCtx
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -38,6 +40,8 @@ object Backup {
|
|||||||
}
|
}
|
||||||
val zipFilePath = "${appCtx.externalFiles.absolutePath}${File.separator}tmp_backup.zip"
|
val zipFilePath = "${appCtx.externalFiles.absolutePath}${File.separator}tmp_backup.zip"
|
||||||
|
|
||||||
|
private val mutex = Mutex()
|
||||||
|
|
||||||
private val backupFileNames by lazy {
|
private val backupFileNames by lazy {
|
||||||
arrayOf(
|
arrayOf(
|
||||||
"bookshelf.json",
|
"bookshelf.json",
|
||||||
@@ -74,16 +78,24 @@ object Backup {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun autoBack(context: Context) {
|
private fun shouldBackup(): Boolean {
|
||||||
val lastBackup = LocalConfig.lastBackup
|
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 {
|
Coroutine.async {
|
||||||
|
mutex.withLock {
|
||||||
|
if (shouldBackup()) {
|
||||||
val backupZipFileName = getNowZipFileName()
|
val backupZipFileName = getNowZipFileName()
|
||||||
if (!AppWebDav.hasBackUp(backupZipFileName)) {
|
if (!AppWebDav.hasBackUp(backupZipFileName)) {
|
||||||
backup(context, context.getPrefString(PreferKey.backupPath))
|
backup(context, AppConfig.backupPath)
|
||||||
} else {
|
} else {
|
||||||
LocalConfig.lastBackup = System.currentTimeMillis()
|
LocalConfig.lastBackup = System.currentTimeMillis()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}.onError {
|
}.onError {
|
||||||
AppLog.put("自动备份失败\n${it.localizedMessage}")
|
AppLog.put("自动备份失败\n${it.localizedMessage}")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user