在应用开发时,可能随着需求或者其他因素,原设计的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();