将更新写入已存在的Android应用程序时有什么重要的事情?

时间:2013-09-05 18:02:20

标签: android android-emulator

我做的应用程序正在播放中。我修复了一些错误,现在我想进行更新。我以前在过去的build中创建了表。如果app遇到我创建表的行,它会忽略还是我应该显式检查表是否存在?使用PreferenceVariables

if(preference_variables.contains("tables_created")) { 
    // dont create table
}  else {
    createTables();
}

1 个答案:

答案 0 :(得分:0)

使用SQLiteOpenHelper课程。它提供了创建resp所需的机制。根据数据库版本升级数据库表,使用onCreateonUpgrade方法。 See this SO entry有一个很好的解释。

详细解释

想象一下您的应用从1.0版演变到例如3.0。

所以在1.0版本中你说一个表有一些列。用户下载并运行它,onCreate()被调用,你创建表,一切都很好。

现在您发布了具有另一个表的版本2.0,并向第一个表添加了一些列。现在你将拥有两种用户。从版本1.0升级的用户和没有版本1.0但下载并安装版本2.0的新用户。现在对于现有用户,将调用onUpgrade(),因此在此处放置代码以创建第二个表并更改第一个表以添加新列。对于新用户,正在调用onCreate(),因此您必须更改该方法以创建第一个和第二个表。

现在您发布版本3.0,说第三个表。现在你将有三种用户。从版本2.0升级的版本,从版本1.0(未安装版本2.0)升级的版本和新用户。同样,对于现有用户,将调用onUpgrade()。现在,您必须根据oldVersion和newVersion的值进行升级。 newVersion将为3,对于从1.0版本升级的用户,oldVersion将为1 - 因此对于那些需要升级版本2.0的用户,对于从版本2.0升级的用户,oldVersion将为2,因此您只需要创建第三个表。再次,对于新用户onCreate()将被调用,在这里你必须现在创建所有三个表。

我希望这是足够的解释。