【问题标题】:How to migrate SharedPreferences during update?如何在更新期间迁移 SharedPreferences?
【发布时间】:2014-08-09 20:05:47
【问题描述】:

我想将 SharedPreference 从布尔值更改为字符串。默认值为 true 并将“启用”。这不是问题,因为它会自动设置。但是如何检查它是否设置为 false,然后将新的首选项设置为“禁用”?是否有在应用程序更新期间调用的方法可以迁移此首选项? 如果我不迁移它,则此首选项的状态会在更新期间丢失...

【问题讨论】:

    标签: android updates android-preferences migrate


    【解决方案1】:
    SharedPreferences preferences = // obtain it
    String pref;
    try {
        pref = preferences.getString("yourPref", "enabled");
    } catch (ClassCastException e) {
        // this means the pref is stored as a boolean
        boolean boolPref = preferences.getBoolean("yourPref", true);
        // store it instead as a String
        pref = boolPref ? "enabled" : "disabled";
        preferences.edit().remove("yourPref").putString("yourPref", pref).commit();
    }
    

    【讨论】:

      【解决方案2】:

      您可以在第一个打开的活动中添加一个简单的方法,为您更新首选项值。此外,添加一个检查,使其仅在第一次执行。

      【讨论】:

      • 应用更新后没有调用方法吗?每次运行代码对我来说似乎并不那么优雅......
      • 不,我认为没有在更新后专门调用的方法。但是,只有在密钥存在时(即您的应用在更新后第一次运行),您才能运行代码来更新 sharedPrefs,然后在添加新的 String Pref 后删除该密钥。以后每次因为key不存在,更新代码就不会运行。
      猜你喜欢
      • 2017-08-26
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 2019-08-26
      • 1970-01-01
      相关资源
      最近更新 更多