Android 在 Play 商店推送更新

标签 android sharedpreferences android-sqlite sqliteopenhelper

我有一个应用程序依赖于 SQLite 来获取数据,这些数据由应用程序附带的 assets 文件夹中的 xml 填充。

  1. 当您第一次运行该应用程序时,它会设置共享首选项 config_run = false。
  2. 然后我检查 config_run = false 然后解析 xml 并将数据转储到 db
  3. 设置 config_run = true

现在我意识到,当我必须在 Google Play 上推送更新并将更多内容添加到 XML 中时。即使我将数据库版本从 1 更改为 2。导入脚本不会运行,因为共享首选项 config_run 值将设置为 true。

关于如何处理这种情况的任何指示?

场景

  1. 首次安装 - Ver = 1,DB V = 1(数据被解析并转储到数据库中)
  2. 错误已修复并推送和更新但没有数据更改 - ver = 1.1,DB V = 1(它应该只是替换代码而不是升级或重新创建数据库)
  3. 升级了 DATA 并推送了一个新更新 - ver 1.2,DB = 2(没有新代码,但必须重新创建数据)

我的应用程序的流程

  1. 应用启动启动 Activity 。如果 Shared Pref - config_run 等于 false,那么它会启动一个进度对话框并解析数据并将其转储到数据库中。
  2. 在解析和创建数据库并转储数据后,它会转到 MainActivity。

第二种情况

  1. SplashActivity 运行并且 config_run = true 因此直接进入 MAin Activity。

正如下面少数人所建议的,如果我尝试在 SQLiteHelper 的 onUpgrade 中将数据哑巴化到数据库中,它只会在 MAinActivity 中发生,因为我没有在 SplashActivity 中打开 Db 连接,并且对话框进度也不会显示。

最佳答案

添加您上次运行脚本的版本号的共享首选项。 在应用程序启动时,检查当前的 apk 版本,如果更新,再次运行脚本并更新 pref

关于Android 在 Play 商店推送更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14361586/

相关文章:

android - 在运行时向 Activity 背景添加半透明覆盖

android - 为什么 apk 在使用 proguard 构建时不起作用?

android - 想要在整数列表中返回 0 IF SUM(something) 为 null

android - 我如何在 Eclipse IDE 中查看我的 sqlite 数据库结构

android Activity 切换方向

android - Firebase 登录 : GoogleSignIn onActivityResult() returns RESULT_CANCELED with Result error 12500

2个 Activity 之间的Android SharedPreferences

java - 另一个 Activity 中的单选按钮仍然为空?

ios - 如何为 NSUserDefaults 指定名称

android - 为离线应用程序创建备份的最佳方法?