diff --git a/app/src/main/java/com/gh/common/constant/Config.java b/app/src/main/java/com/gh/common/constant/Config.java index dd3975990a..2441ff9081 100644 --- a/app/src/main/java/com/gh/common/constant/Config.java +++ b/app/src/main/java/com/gh/common/constant/Config.java @@ -207,7 +207,7 @@ public class Config { PackageHelper.initList(); // 初始化畅玩相关的东西 - VHelper.init(HaloApp.getInstance()); + VHelper.init(HaloApp.getInstance(), false); } @Nullable diff --git a/app/src/main/java/com/gh/vspace/VBackupHelper.kt b/app/src/main/java/com/gh/vspace/VBackupHelper.kt index d0a78d179f..e43938601a 100644 --- a/app/src/main/java/com/gh/vspace/VBackupHelper.kt +++ b/app/src/main/java/com/gh/vspace/VBackupHelper.kt @@ -16,7 +16,8 @@ import java.nio.file.Files object VBackupHelper { - private const val BACKUP_FOLDER = "/gh-files/vspace_backup" + // 添加数据库版本作为路径,避免数据错乱异常 + private const val BACKUP_FOLDER = "/gh-files/vspace_backup/" + VGameDatabase.DB_VERSION fun recoverValidData(context: Context) { runOnIoThread { @@ -78,6 +79,10 @@ object VBackupHelper { backupDir.deleteRecursively() + if (backupDir.parentFile?.exists() == false) { + backupDir.parentFile?.mkdir() + } + backupDir.mkdir() backupSubDir.mkdir() diff --git a/app/src/main/java/com/gh/vspace/VHelper.kt b/app/src/main/java/com/gh/vspace/VHelper.kt index 99f2d78774..a3f182ca14 100644 --- a/app/src/main/java/com/gh/vspace/VHelper.kt +++ b/app/src/main/java/com/gh/vspace/VHelper.kt @@ -110,27 +110,35 @@ object VHelper { } } + /** + * 初始化 + * @param observeDatabaseChanges 是否启用数据库变动监听 + */ @SuppressLint("CheckResult") @JvmStatic - fun init(context: Context) { - if (isVGameOn() && !mIsInitialized) { - mIsInitialized = true + fun init(context: Context, observeDatabaseChanges: Boolean) { + if (isVGameOn()) { + if (!mIsInitialized) { + mIsInitialized = true - VArchiveHelper.init() + VArchiveHelper.init() - val config = Config.getVSettingEntity()?.va - if (config?.arch64 != null && PackageUtils.isInstalled(context, config.arch64.packageName)) { - if (isVIsUsed()) { - connectService(true) + val config = Config.getVSettingEntity()?.va + if (config?.arch64 != null && PackageUtils.isInstalled(context, config.arch64.packageName)) { + if (isVIsUsed()) { + connectService(true) + } + + // 检查畅玩助手组件更新 + getVSpaceUpdate(config.arch64) } - - // 检查畅玩助手组件更新 - getVSpaceUpdate(config.arch64) + PackageObserver.registerPackageChangeChangeListener(mPackageObserver) } - PackageObserver.registerPackageChangeChangeListener(mPackageObserver) - vGameLiveData.observeForever { - mVGameSnapshotList = ArrayList(it) + if (observeDatabaseChanges) { + vGameLiveData.observeForever { + mVGameSnapshotList = ArrayList(it) + } } } } diff --git a/app/src/main/java/com/gh/vspace/db/VGameDatabase.kt b/app/src/main/java/com/gh/vspace/db/VGameDatabase.kt index df741ff367..425208a616 100644 --- a/app/src/main/java/com/gh/vspace/db/VGameDatabase.kt +++ b/app/src/main/java/com/gh/vspace/db/VGameDatabase.kt @@ -7,10 +7,11 @@ import androidx.room.RoomDatabase import androidx.room.TypeConverters import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase +import com.gh.vspace.db.VGameDatabase.Companion.DB_VERSION import com.halo.assistant.HaloApp @TypeConverters(VGameConverter::class) -@Database(entities = [VGameEntity::class, VArchiveEntity::class], version = 2, exportSchema = false) +@Database(entities = [VGameEntity::class, VArchiveEntity::class], version = DB_VERSION, exportSchema = false) abstract class VGameDatabase : RoomDatabase() { abstract fun vGameDao(): VGameDao @@ -20,6 +21,8 @@ abstract class VGameDatabase : RoomDatabase() { companion object { const val DATABASE = "v_game_database.db" + const val DB_VERSION = 2 + private val MIGRATION_1_2 = object : Migration(1, 2) { override fun migrate(database: SupportSQLiteDatabase) { database.execSQL( diff --git a/app/src/main/java/com/halo/assistant/HaloApp.java b/app/src/main/java/com/halo/assistant/HaloApp.java index c31f48235b..45baf3533f 100644 --- a/app/src/main/java/com/halo/assistant/HaloApp.java +++ b/app/src/main/java/com/halo/assistant/HaloApp.java @@ -461,7 +461,7 @@ public class HaloApp extends MultiDexApplication { } private void retrieveVGameInfoIfNeeded() { - VHelper.init(this); + VHelper.init(this, true); } public boolean isReinstallTheSameVersion() {