Android处理应用程序更新和数据库更改
我基本上已经完成了一个android应用程序的开发,该应用程序使用SQLite数据库,并将其复制到设备上的用户数据区域,例如/data/data/com.company.app/databases/users.db 我不确定marketplace应用程序更新过程是如何进行的,也不确定如何测试它 我目前检查设备上是否存在数据库,如果不存在,则复制数据库(通常仅在首次启动时发生)。如果更新的应用程序中有新版本的数据库,会发生什么情况?市场更新是否会删除用户数据,以便在下次发布时复制我的新数据库 如果我对数据库进行更改/添加记录/等并将其与新应用打包,将来会发生什么?此数据库不会覆盖旧数据库吗 否则,为了避免在每次启动时从应用程序捆绑包复制和覆盖数据库,是否有方法检查数据库文件的大小和日期,并且仅在捆绑包中的数据库较新时进行复制Android处理应用程序更新和数据库更改,android,database,marketplace,Android,Database,Marketplace,我基本上已经完成了一个android应用程序的开发,该应用程序使用SQLite数据库,并将其复制到设备上的用户数据区域,例如/data/data/com.company.app/databases/users.db 我不确定marketplace应用程序更新过程是如何进行的,也不确定如何测试它 我目前检查设备上是否存在数据库,如果不存在,则复制数据库(通常仅在首次启动时发生)。如果更新的应用程序中有新版本的数据库,会发生什么情况?市场更新是否会删除用户数据,以便在下次发布时复制我的新数据库 如果
如果有人需要澄清,请询问。我正在做类似的事情。我所做的是设置数据库版本,然后当我检查数据库是否存在时,我还要确保它是正确的版本。如果不是,我从数据库保存用户收藏夹,擦除并重新复制数据库,然后放回用户收藏夹 这是我的升级版
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);
}
}
onUpgrade(..)是如何调用的?@powerX onUpgrade会在您增加数据库版本号时自动调用。
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);