如何使用新版本迁移Android偏好设置?

我有一个用于存储用户偏好的应用程序,如下所示:

public static final String KEY_PREFS_LOGIN_INFO = "login_info";
public static final String KEY_PREFS_FILE_VERSIONs = "file_versions";
public static final String KEY_PREFS_LOGS = "logs";
public static final String KEY_PREFS_OTHERS = "others";

使用像这样的首选方法

public static void setFiLeversion(String key) {
    SharedPreferences settings = getAppContext().getSharedPreferences(KEY_PREFS_FILE_VERSIONS, 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.putString("current", key);
    editor.commit();
}

然后检索像这样的值:

public static String filesversion() {
    SharedPreferences settings = getAppContext().getSharedPreferences(KEY_PREFS_FILE_VERSIONS, 0);
    String current = settings.getString("current", "");
    return current;
}

我想要做的是将所有首选项都存储在一个位置,因此我可以使用通用方法来访问任何首选项.在升级时,如何设置将值从旧存储位置迁移到新存储位置的方法?我正在寻找类似于sqliteOpenHelper中的onUpgrade()方法内容.

解决方法:

我会覆盖应用程序.然后在启动时检查您的共享首选项中存储的版本号,然后根据需要执行从任何旧键到新键的遍历.

public class MyApplication extends Application {
    private static final int CURRENT_PREFS_VERSION = 2;

    @Override
    public void onCreate() {
        super.onCreate();

        if(filesversion() != CURRENT_PREFS_VERSION){
            migrate(filesversion())
        }
    }

    private migrate(int oldVersion){

        switch(oldVersion){
            case 1:
                //get old preference, store new preference
                break;
        }

        setFiLeversion(CURRENT_PREFS_VERSION)
    }

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...