Android SharedPreferences 数据升级

在应用开发时,可能随着需求或者其他因素,原设计的SharedPreferences的值需要更改,这时我们该怎么做呢?

下面来看一个例子, 这是我们第一版开发的,

1package com.laomou.demo; 2 3import android.content.SharedPreferences; 4 5public class PreferencesUpgrade { 6 public static final String KEY_LOCAL_VERSION = "pref_local_version_key"; 7 public static final int CURRENT_LOCAL_VERSION = 0; 8 9 public static void upgradeLocalPreferences(SharedPreferences pref) { 10 int version; 11 try { 12 version = pref.getInt(KEY_LOCAL_VERSION, 0); 13 } catch (Exception ex) { 14 version = 0; 15 } 16 if (version == CURRENT_LOCAL_VERSION) 17 return; 18 19 SharedPreferences.Editor editor = pref.edit(); 20 if (version == 0) { 21 // TODO 22 version = 1; 23 } 24 editor.putInt(KEY_LOCAL_VERSION, CURRENT_LOCAL_VERSION); 25 editor.apply(); 26 } 27}

随着需求或者其他因素,原设计的SharedPreferences的值需要更改,

比如KEY_PICTURE_SIZE 需要更改 为 1920x1152

这是我们的第二版代码

1public class PreferencesUpgrade { 2 public static final String KEY_LOCAL_VERSION = "pref_local_version_key"; 3 public static final int CURRENT_LOCAL_VERSION = 1; 4 5 public static void upgradeLocalPreferences(SharedPreferences pref) { 6 int version; 7 try { 8 version = pref.getInt(KEY_LOCAL_VERSION, 0); 9 } catch (Exception ex) { 10 version = 0; 11 } 12 if (version == CURRENT_LOCAL_VERSION) 13 return; 14 15 SharedPreferences.Editor editor = pref.edit(); 16 if (version == 0) { 17 editor.putString(KEY_PICTURE_SIZE, "1920x1152"); 18 editor.apply(); 19 version = 1; 20 } 21 editor.putInt(KEY_LOCAL_VERSION, CURRENT_LOCAL_VERSION); 22 editor.apply(); 23 } 24}

再来看是如何做到更改SharedPreferences的值

更新版本号

public static final int CURRENT_LOCAL_VERSION = 1;

如果当前版本是0,那么则需要更新

1if (version == 0) { 2 editor.putString(KEY_PICTURE_SIZE, "1920x1152"); 3 editor.apply(); 4 version = 1; 5}

更新当前版本号

1editor.putInt(KEY_LOCAL_VERSION, CURRENT_LOCAL_VERSION); 2editor.apply();
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )