作为开发者,您如何处理Android应用的更新?
特别是,(1)如果我在更新中更改了数据库方案,我将如何在应用程序即将更新时收到通知?
更具体地说,(2)是否有一个入口点我可以放置处理更新的代码并完成它?或者我每次尝试访问时都必须检查数据库版本吗?
答案 0 :(得分:1)
如果我理解正确,SQliteOpenHelper#onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)是您正在寻找的方法。来自文档:
需要升级数据库时调用。实现应使用此方法删除表,添加表或执行升级到新架构版本所需的任何其他操作。
此方法从API 1开始提供,因此它适用于可安装应用程序的所有设备。
Upd:每当您创建SQliteOpenHelper实例时,都会将数据库版本传递给其构造函数(请查看documentation中的构造函数)。因此,当您制作应用的第一个版本时,您会传递1
作为版本号。此编号保存在数据库文件中。稍后,当您创建新版本的应用程序和时,需要对数据库架构进行一些更改,将此版本更改为2
。在构造期间SQliteOpenHelper
发现存储在db文件中的版本为1
,2
传递给构造函数的版本为2
- 因此它调用onUpgrade()
方法在哪里编写将相应更改架构的代码。