gpt4 book ai didi

Android 处理应用程序更新和数据库更改

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:03:06 26 4
gpt4 key购买 nike

我基本上已经完成了一个使用 SQLite 数据库的 android 应用程序的开发,我将这些数据库复制到设备上的用户数据区域,例如/data/data/com.company.app/databases/users.db

我不确定市场应用程序更新过程是如何进行的,也不确定我该如何测试它。

我目前检查设备上是否存在数据库,如果不存在则复制它(通常只发生在首次启动时)。如果我更新的应用程序中有新版本的数据库会怎样?市场更新是否会删除用户数据,以便在下次发布时复制我的新数据库?

如果我更改数据库/添加记录/等并将其与新应用程序打包,将来会发生什么情况?这个数据库不会覆盖旧数据库吗?

否则,为避免在每次启动时从应用程序包中复制和覆盖数据库,有没有一种方法可以检查数据库文件的大小和日期,并且仅在包中的数据库较新时才进行复制?

如果有人需要澄清,请询问。

最佳答案

我正在做类似的事情。我所做的是设置数据库版本,然后当我检查数据库是否存在时,我还要确保它是正确的版本。如果不是,我会从数据库中保存用户收藏夹,删除并重新复制我的数据库,然后放回用户收藏夹。

这是我的升级

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion == 2) {

System.out.println("Performing upgrade!");
openDataBase();
// save the old favorites
Cursor mCursor = getFavorites();
ArrayList<Stop> favs = allCursorToStops(mCursor);
mCursor.close();

deleteRecreate(db);

openDataBase();

for (int i = 0; i < favs.size(); i++)
setFavorite(favs.get(i));

close();

} else {

deleteRecreate(db);

}
}

这是我检查是否存在/是否需要升级等的地方

    boolean dbExist = checkDataBase();

if(dbExist){
// check if we need to upgrade
openDataBase();
int cVersion = myDataBase.getVersion();
close();
if(cVersion != VERSION)
onUpgrade(myDataBase, myDataBase.getVersion(), VERSION);

关于Android 处理应用程序更新和数据库更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3929634/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com