最近工作量不够饱和_,闲下来了,就想着写点什么,把之前项目中遇到的问题记录下来
我们对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内容被清空。
但我确认我的程序是单进程,应该不是这个原因引起的,只能把锅甩给魅族啦~~~
网友评论