我有一个依赖于 SQLite 的应用程序来获取数据,这些数据由资产文件夹中的应用程序附带的 xmls 填充。
- 当您第一次运行应用程序时,它会设置一个共享首选项 config_run = false。
- 然后我检查 config_run = false 然后解析 xml 并将数据转储到 db
- 设置 config_run = true
现在我意识到当我必须在 Google Play 上推送更新并将更多内容添加到 XML 中时。即使我将数据库版本从 1 更改为 2。导入脚本不会运行,因为共享首选项 config_run 值将设置为 true。
关于如何处理这种情况的任何指示?
场景
- 首次安装 - Ver = 1,DB V = 1(数据被解析并转储到数据库中)
- 错误修复并推送和更新,但没有数据更改 - ver = 1.1,DB V = 1(它应该只是替换代码而不是升级或重新创建数据库)
- 升级了 DATA 并推送了新的更新 - 1.2 版,DB = 2(没有新代码,但必须重新创建数据)
我的应用程序的流程
- 应用程序启动 Splash Activity。如果 Shared Pref - config_run 等于 false,那么它会启动一个进度对话框并解析数据并将其转储到数据库中。
- 在解析和创建数据库并转储数据后,它会转到 MainActivity。
第二种情况
- SplashActivity 运行和 config_run = true 所以直接进入 MAin Activity。
正如下面少数人所建议的那样,如果我尝试在 SQLiteHelper 的 onUpgrade 中将数据哑化到数据库中,它只会发生在 MAinActivity 中,因为我没有在 SplashActivity 中打开 Db 连接,并且对话进度也不会显示。