Java 来自SQLite的数据在应用程序更新时丢失
我的应用程序更新有问题。 所有用户设置都保存在键值表内的SQLite DB中。之前,我将设置保留在共享首选项中,但在更新时,它们被删除了。 由于数据库在更新时是安全的,所以我移动了数据库中的所有设置,一切正常。但并非总是如此。大多数更新时间,所有数据都会丢失。 如果先前删除了所有“数据”文件夹,现在只删除数据库。尽管从未调用过onUpgrade方法。在Android清单中,Android:allowBackup=true和Android:fullBackupContent=@xml/backup\u描述符 这是我的备份描述符文件:Java 来自SQLite的数据在应用程序更新时丢失,java,android,database,sqlite,updating,Java,Android,Database,Sqlite,Updating,我的应用程序更新有问题。 所有用户设置都保存在键值表内的SQLite DB中。之前,我将设置保留在共享首选项中,但在更新时,它们被删除了。 由于数据库在更新时是安全的,所以我移动了数据库中的所有设置,一切正常。但并非总是如此。大多数更新时间,所有数据都会丢失。 如果先前删除了所有“数据”文件夹,现在只删除数据库。尽管从未调用过onUpgrade方法。在Android清单中,Android:allowBackup=true和Android:fullBackupContent=@xml/backup
<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
<include domain="database"
path="." />
<include domain="sharedpref"
path="." />
</full-backup-content>
我试图通过adb、文件管理器甚至游戏市场安装应用程序。在每种情况下都有以下情况:
例如,我安装了AppV8,做了一些更改,这些更改就被保存了。然后我将我的应用程序更新到v9,不打开它,我去检查DB文件是否存在,它们是否不存在
我真的不明白为什么会这样,我希望你能帮助我。
我试图在Stackoverflow上找到类似的内容,但常见的问题是如何在更新时删除数据,而我无法保存它:
UPD:我知道什么时候需要使用onUpgrage方法,并且我知道它是如何工作的。但我不明白为什么系统会清除我设备上的数据。我试着用相同的设备和操作系统版本在模拟器上测试,我的设备是Nexus 5x,问题没有出现。为什么?
我为语法问题道歉,我不太懂英语
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 2) {
db.execSQL(DATABASE_ADD_COLUMN_!);
}
if (oldVersion < 3) {
db.execSQL(DATABASE_ADD_COLUMN_2);
}
}
我发现本教程对SQlite升级最有帮助
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 2) {
db.execSQL(DATABASE_ADD_COLUMN_!);
}
if (oldVersion < 3) {
db.execSQL(DATABASE_ADD_COLUMN_2);
}
}