Android 在应用程序更新时,需要从数据库迁移到SharedReference

Android 在应用程序更新时,需要从数据库迁移到SharedReference,android,updates,Android,Updates,在我当前项目的早期版本中,我们使用数据库进行设置。 但现在我们认为对于简单的键值对来说,数据库是有开销的 所以我们决定使用sharedpref。 现在的问题是如何处理更新功能。 我们没有使用数据库,所以onUpgrade将无法工作 我打算做什么 ArrayList<String> databases = new ArrayList<String>(Arrays.asList(mContext.databaseList())); if(databases.contains(

在我当前项目的早期版本中,我们使用数据库进行设置。 但现在我们认为对于简单的键值对来说,数据库是有开销的 所以我们决定使用sharedpref。 现在的问题是如何处理更新功能。 我们没有使用数据库,所以onUpgrade将无法工作

我打算做什么

ArrayList<String> databases = new ArrayList<String>(Arrays.asList(mContext.databaseList()));
if(databases.contains("dbname")){
    copyDataToSharedPref();
    mContext.deleteDatabase("dbname");
}
arraylistdatabases=newarraylist(Arrays.asList(mContext.databaseList());
if(databases.contains(“dbname”)){
CopyDataToSharedRef();
删除数据库(“dbname”);
}
有什么简单的方法来处理这个问题吗

有什么简单的方法来处理这个问题吗

不完全是,但并不难。只要做一些类似于下面的事情

  • 当主/启动器
    活动开始时,让它检查特定键的
    SharedReferences
    ,例如布尔值“更新完成”
  • 如果密钥不存在,则有两种可能性。第一个是全新安装,第二个是更新
  • 如果密钥确实存在,则应用程序已经更新,数据库数据已经传输到
    SharedReferences
    ,因此继续运行应用程序
  • 如果密钥不存在,则检查数据库是否存在。如果数据库不存在,则这是一个新安装。在这种情况下,只需将
    SharedReferences
    设置为新安装
  • 如果密钥不存在但数据库确实存在,则将数据从数据库传输到
    SharedReferences
    ,删除数据库,然后将“update_complete”布尔值放入
    SharedReferences

  • 我想这就涵盖了它。

    即使在应用程序更新之后(如果用户不清除数据),数据库条目也会在那里。因此,在你的情况下,我将:

    • 检查是否有任何数据库及其是否为空
    • 如果有DB,则读取并创建相应的
      SharedReferences
    • 使用
      context.deleteDatabase(数据库名称)删除数据库
    我认为
    应用程序
    类将是这样做的最佳场所

    我不确定这是否是最好(或最差的
    :p
    )的方法,但我希望它有用