最近工作量不夠飽和_草娜,閑下來了层玲,就想著寫點(diǎn)什么界轩,把之前項(xiàng)目中遇到的問題記錄下來
我們對(duì)SharedPref輕量存儲(chǔ)是再熟悉不過了,基本在項(xiàng)目中都會(huì)用到玩荠。
之前項(xiàng)目中存儲(chǔ)了一些設(shè)置項(xiàng)到SharePref漆腌,持久化后,下次直接從本地load出來阶冈,顯示到界面上闷尿。
正因?yàn)槭呛?jiǎn)單的存儲(chǔ)了幾個(gè)開關(guān)狀態(tài)、幾個(gè)屬性值女坑,所以寫代碼就沒有仔細(xì)琢磨填具,下面是之前的代碼:
使用PreferenceManager.getDefaultSharedPreferences(Context)獲取默認(rèn)的sharedPref實(shí)例
結(jié)果發(fā)版本前,QA給我提了一bug匆骗,說應(yīng)用覆蓋安裝后劳景,設(shè)置項(xiàng)恢復(fù)默認(rèn),沒有存儲(chǔ)成功(只有魅族機(jī)型)碉就!
最后查閱資料盟广,修改獲取實(shí)例的方式,不能用默認(rèn)的實(shí)例铝噩,用下面的方式獲取就解決了衡蚂!
SharedPreferences pref = context.getSharedPreferences(
SHAREPREFERENCE_NAME, Context.MODE_PRIVATE |Context.MODE_MULTI_PROCESS);
默認(rèn)的SharedPref僅支持讀寫模式為Context.MODE_PRIVATE,且文件是以包+"_preferences"命名
private static String getDefaultSharedPreferencesName(Context context) {
return context.getPackageName() + "_preferences";
}
private static int getDefaultSharedPreferencesMode() {
return Context.MODE_PRIVATE;
}
默認(rèn)的SharedPref無法支持Context.MODE_MULTI_PROCESS骏庸,當(dāng)安卓程序有多個(gè)進(jìn)程同時(shí)讀寫時(shí),會(huì)導(dǎo)致默認(rèn)的sharedPref內(nèi)容被清空年叮。
但我確認(rèn)我的程序是單進(jìn)程具被,應(yīng)該不是這個(gè)原因引起的,只能把鍋甩給魅族啦~~~