Android的:如何使迁移脚本的特定版本
我的应用程序的当前发布versionCode
是,&我想运行某些迁移代码来解决应用程序的数据库(而不是模式结构)在用户的数据。Android的:如何使迁移脚本的特定版本
那么,如何为人们任何版本小于或等于15到任何版本高于或等于16升级运行固定的代码只有一次?
如果您正在谈论migratina sql数据库,那么SQLiteOpenHelper.onUpgrade()是将您的迁移代码放入的正确位置。在这种情况下,您不必依靠versionCode,而是依赖于数据库版本号。因此,只需在您的下一次应用更新中增加数据库版本号,SQLiteOpenHelper
将自动调用onUpgrade()
。你可以做查询和表格定义。您可以查询整个数据,将其加载到内存中,在内存中处理这些数据,更改sql表定义,清除表并将(操作/迁移)数据重新插入到sql表中。
如果您正在讨论关于迁移其他数据(如共享首选项,外部存储等文件),那么您可以继承Application
覆盖onCreate()
。然后,您检查是否versionCode == 16
并执行您的迁移工作,之后您必须存储迁移已成功完成的信息(以便在下次应用启动时不再重新运行迁移)。我愿意通过将布尔标志保存到共享首选项中。
对于Sugar ORM,您可以使用迁移脚本执行升级。更多细节在这里.. http://satyan.github.io/sugar/migration.html
我知道关于糖迁移,问题是我想在迁移后触发一个同步适配器,并且糖迁移只是一个sql文件。 – AbdelHady 2015-04-05 13:14:05
因为我关心的是运行一些java代码升级,所以我已经想到了类似于你的第二个建议,我正在尝试它并会让你知道 – AbdelHady 2015-04-05 13:12:44