我有一个应用程序依赖于 SQLite 来获取数据,这些数据由应用程序附带的 assets 文件夹中的 xml 填充。
- 当您第一次运行该应用程序时,它会设置共享首选项 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 并推送了一个新更新 - ver 1.2,DB = 2(没有新代码,但必须重新创建数据)
我的应用程序的流程
- 应用启动启动 Activity 。如果 Shared Pref - config_run 等于 false,那么它会启动一个进度对话框并解析数据并将其转储到数据库中。
- 在解析和创建数据库并转储数据后,它会转到 MainActivity。
第二种情况
- SplashActivity 运行并且 config_run = true 因此直接进入 MAin Activity。
正如下面少数人所建议的,如果我尝试在 SQLiteHelper 的 onUpgrade 中将数据哑巴化到数据库中,它只会在 MAinActivity 中发生,因为我没有在 SplashActivity 中打开 Db 连接,并且对话框进度也不会显示。
最佳答案
添加您上次运行脚本的版本号的共享首选项。 在应用程序启动时,检查当前的 apk 版本,如果更新,再次运行脚本并更新 pref
关于Android 在 Play 商店推送更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14361586/