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