2013-06-23 73 views
2

我有一个Android应用程序,我即将发布,并且正在审阅我的一些代码。我担心我的SQLiteOpenHelper的实施。具体来说,我想验证onUpgrade方法中参考的oldVersionnewVersion。这是基于我的AndroidManifest.xml中的versionCode?还是这个值是完全独立的,特定于数据库?如果是后者,数据库如何确定版本?基于SQLiteOpenHelper版本号是什么?

+0

后面,你只需要在你的SQLiteOpenHelper类中声明一个简单的int变量,这是你每次更新任何东西时需要改变的唯一变量。 –

回答

4

这是基于我的AndroidManifest.xml中的versionCode吗?

通常情况下,除非每次向应用程序发布升级时升级模式,即使这样,“基于”也大多是巧合。

或者这个值是完全独立的东西,具体到数据库?

是的。每次有新的数据库模式时,都会增加版本。

如果是后者,数据库如何确定版本?

在每个onCreate()onUpgrade(),Android的坚持在元数据数据库中的表的数据库模式的当时的新版本。这就是Android在将来使用助手时会检查的内容,并将该值与您在构造函数SQLiteOpenHelper中提供的值进行比较。

+0

那么“新版本”价值从哪里来?每当'onCreate'被调用时它总是1吗?或者有没有办法让我指定这个值应该是什么?我问的原因是我正在从'onCreate'运行5次迁移。如何让Android在下次需要更新时开始迁移#6? –

+0

啊,我想我意识到我错过了什么。构造函数需要一个版本号,我完全忘记了我的重写。这就是版本号码的来源。 :) –

+0

@MattHuggins:IOW,版本号来自你。或者你正在输入密码的忠诚仆从,无论情况如何。 :-) – CommonsWare

相关问题