android上有没有任何机制和/或编程实践来执行一次性安装/更新脚本?这似乎是一个非常基本的问题,但谷歌搜索没有帮助。
假设我的应用程序使用数据库,并且需要有一个表来表示常量值(例如国家/地区名称,城市名称等)。应用程序应该创建一个数据库并在其中写入常量值,但是只应在应用程序已全新安装或更新。
我应该;a)在MainActivity中放置一个函数来检查其中的数据库和数据是否到位
b)在MainActivity中放置一个函数,用当前软件版本编写一小块文件,然后在每次运行中检查它是否是全新安装或更新(当然它会先检查文件,然后如果没有,请写下来)
c)或者在每次安装和/或更新中是否还有其他的defacto方法?
答案 0 :(得分:1)
这取决于您将如何安装以及数据库中的更改。
如果您只是生成一个新的Apk并运行它,它将更新并且不会删除以前的数据,但如果您删除APP并安装新的,则数据将被删除。
如果安装的版本低于新应用程序中所需的版本,则应考虑的其他事项是数据库的版本。
请注意,您需要使用dbhelper.getWriteableDatabase()或dbhelper.getReadableDatabase()获取数据库对象。仅创建一个SQLiteOpenHelper对象是不够的。
对此的控制取决于您使用什么来创建数据库,例如,如果您使用SQLiteOpenHelper创建通常使用的方法:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
修改强> 何时调用哪种方法?
代码:
DbName = "teste.db"
DbVersion = 1
在设备上: 无数据库
^将调用onCreate。
代码:
DbName = "teste.db"
DbVersion = 2
在设备上:
DbName = "teste.db"
DbVersion = 1
^将调用onUpgrade
代码:
DbName = "teste.db"
DbVersion = 1
在设备上:
DbName = "teste.db"
DbVersion = 2
^将调用onDowngrade
代码:
DbName = "anotherName.db"
DbVersion = 1
在设备上:
DbName = "teste.db"
DbVersion = 1
^将调用onCreate