您好,欢迎来到花图问答。
搜索
您的当前位置:首页覆盖安装导致SharedPreferences被清空的问题

覆盖安装导致SharedPreferences被清空的问题

来源:花图问答

最近工作量不够饱和_,闲下来了,就想着写点什么,把之前项目中遇到的问题记录下来

我们对SharedPref轻量存储是再熟悉不过了,基本在项目中都会用到。
之前项目中存储了一些设置项到SharePref,持久化后,下次直接从本地load出来,显示到界面上。
正因为是简单的存储了几个开关状态、几个属性值,所以写代码就没有仔细琢磨,下面是之前的代码:

使用PreferenceManager.getDefaultSharedPreferences(Context)获取默认的sharedPref实例

结果发版本前,QA给我提了一bug,说应用覆盖安装后,设置项恢复默认,没有存储成功(只有魅族机型)!

最后查阅资料,修改获取实例的方式,不能用默认的实例,用下面的方式获取就解决了!

  SharedPreferences pref = context.getSharedPreferences(
            SHAREPREFERENCE_NAME, Context.MODE_PRIVATE |Context.MODE_MULTI_PROCESS);

默认的SharedPref仅支持读写模式为Context.MODE_PRIVATE,且文件是以包+"_preferences"命名

  private static String getDefaultSharedPreferencesName(Context context) {
    return context.getPackageName() + "_preferences";
 }

  private static int getDefaultSharedPreferencesMode() {
        return Context.MODE_PRIVATE;
  }

默认的SharedPref无法支持Context.MODE_MULTI_PROCESS,当安卓程序有多个进程同时读写时,会导致默认的sharedPref内容被清空。
但我确认我的程序是单进程,应该不是这个原因引起的,只能把锅甩给魅族啦~~~

Copyright © 2019- huatuowenda.com 版权所有 湘ICP备2023022495号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务