【发布时间】:2012-12-30 23:01:36
【问题描述】:
我有一个依赖于 SQLite 的应用程序来获取数据,这些数据由资产文件夹中的应用程序附带的 xmls 填充。
- 当您第一次运行应用程序时,它会设置共享首选项 config_run = false。
- 然后我检查 config_run = false 然后解析 xml 并将数据转储到数据库中
- 设置 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 活动。如果 Shared Pref - config_run 等于 false,那么它会启动一个进度对话框并解析数据并将其转储到数据库中。
- 在解析和创建数据库并将数据转储到 MainActivity 时。
第二种情况
- SplashActivity 运行并且 config_run = true 所以直接进入 MAin Activity。
正如下面少数人建议的那样,如果我尝试在 SQLiteHelper 的 onUpgrade 中将数据哑化到数据库中,它只会在 MAinActivity 中发生,因为我没有在 SplashActivity 中打开 Db 连接,并且对话进度也不会显示。
【问题讨论】:
-
你在哪里解析这些资产 xml 文件?在
SQLiteOpenHelper的onCreate方法中还是手动? -
@Luksprog 我现在正在我的 Splash Activity 中做这些事情。
标签: android sharedpreferences android-sqlite sqliteopenhelper