Android应用程序安装脚本机制/方法

Android应用程序安装脚本机制/方法,android,installation,Android,Installation,android上是否有执行一次性安装/更新脚本的机制和/或编程实践?这似乎是一个非常基本的问题,但谷歌搜索没有帮助 假设我的应用程序使用一个数据库,并且需要一个常量值表(如国家名称、城市名称等)。应用程序应该创建一个数据库并在其中写入常量值,但只有在新安装或更新应用程序时才应该这样做 我应该 a) 在MainActivity中放置一个函数,以检查其中的数据库和数据是否到位 b) 在MainActivity中放置一个函数,用当前软件版本编写一小段文件,然后在每次运行时检查它是否是新安装或更新(当然

android上是否有执行一次性安装/更新脚本的机制和/或编程实践?这似乎是一个非常基本的问题,但谷歌搜索没有帮助

假设我的应用程序使用一个数据库,并且需要一个常量值表(如国家名称、城市名称等)。应用程序应该创建一个数据库并在其中写入常量值,但只有在新安装或更新应用程序时才应该这样做

我应该

a) 在MainActivity中放置一个函数,以检查其中的数据库和数据是否到位

b) 在MainActivity中放置一个函数,用当前软件版本编写一小段文件,然后在每次运行时检查它是否是新安装或更新(当然,它将首先检查文件,如果不存在则写入)


c) 或者在每次安装和/或更新中是否有任何其他实际方法可以运行此功能

这取决于您将如何安装以及数据库中的更改

如果您只是生成一个新的Apk并运行它,它将更新而不删除以前的数据,但是如果您删除应用并安装新的,数据将被删除

<> P>另外,您应该考虑的是数据库的版本,如果安装的版本低于您的新应用程序所需的版本。 请注意,您需要使用dbhelper.getWriteableDatabase()或dbhelper.getReadableDatabase()获取数据库对象。仅创建SQLiteOpenHelper对象是不够的

其控制取决于您使用什么创建数据库,例如,如果您使用SQLiteOpenHelper创建数据库,通常会使用以下方法:

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {


}
编辑: 什么时候调用哪个方法

关于代码:

DbName = "teste.db"
DbVersion = 1
DbName = "teste.db"
DbVersion = 2
DbName = "teste.db"
DbVersion = 1
DbName = "anotherName.db"
DbVersion = 1
在设备上: 无分贝

^将调用onCreate。

关于代码:

DbName = "teste.db"
DbVersion = 1
DbName = "teste.db"
DbVersion = 2
DbName = "teste.db"
DbVersion = 1
DbName = "anotherName.db"
DbVersion = 1
在设备上:

 DbName = "teste.db"
 DbVersion = 1
 DbName = "teste.db"
 DbVersion = 2
 DbName = "teste.db"
 DbVersion = 1
^将调用onUpgrade

关于代码:

DbName = "teste.db"
DbVersion = 1
DbName = "teste.db"
DbVersion = 2
DbName = "teste.db"
DbVersion = 1
DbName = "anotherName.db"
DbVersion = 1
在设备上:

 DbName = "teste.db"
 DbVersion = 1
 DbName = "teste.db"
 DbVersion = 2
 DbName = "teste.db"
 DbVersion = 1
^将调用onDowngrade

关于代码:

DbName = "teste.db"
DbVersion = 1
DbName = "teste.db"
DbVersion = 2
DbName = "teste.db"
DbVersion = 1
DbName = "anotherName.db"
DbVersion = 1
在设备上:

 DbName = "teste.db"
 DbVersion = 1
 DbName = "teste.db"
 DbVersion = 2
 DbName = "teste.db"
 DbVersion = 1

^将调用onCreate

谢谢。这包括数据库版本控制。我需要做这项检查做其他用途吗?例如,升级后是否需要刷新设备中的缓存文件?是否有任何本机机制?您可以将任何逻辑放入onUpgrade,因此,如果数据库比安装的更新,代码将被执行,通常在onUpgrade方法中,我们手动删除表并创建新表,但如果您喜欢使用Alter Table或其他任何方法,则不需要删除它们。要手动检查版本,只需实例化数据库并调用方法
getVersion()你也可以为相反的情况创建一个onDowngrade方法谢谢,这就是我所需要的。我知道我已经接受了答案,但是我脑海中突然出现了一个关于这个的特定问题。何时调用onCreate和onUpdate方法?它们是自动调用还是必须手动调用?我已经在MainActivity中实例化了dbhelper类,但它似乎没有自动调用onCreate方法(在尝试此操作之前,我正在从设备上卸载应用程序)。