原理
內(nèi)部是以 XML 結(jié)構(gòu)保存在 /data/data/包名/shared_prefs 文件夾下遵湖,數(shù)據(jù)以鍵值對(duì)的形式保存。如下:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<float name="isFloat" value="1.5" />
<string name="isString">Android</string>
<int name="isInt" value="1" />
<long name="isLong" value="1000" />
<boolean name="isBoolean" value="true" />
<set name="isStringSet">
<string>element 1</string>
<string>element 2</string>
<string>element 3</string>
</set>
</map>
apply 和 commit 的區(qū)別
apply:異步執(zhí)行晚吞,沒(méi)有返回值延旧;
commit:同步執(zhí)行,有返回值槽地。
如果不考慮結(jié)果并且是在主線程執(zhí)行推薦使用 apply迁沫;
需要確保操作成功且有后續(xù)操作的話,用 commit()
SharedPreferences 的創(chuàng)建模式
MODE_PRIVATE
:默認(rèn)模式捌蚊,該模式下創(chuàng)建的文件只能被當(dāng)前應(yīng)用或者與該應(yīng)用具有相同SharedUserID的應(yīng)用訪問(wèn)集畅。
MODE_WORLD_READABLE
:允許其他應(yīng)用讀取這個(gè)模式創(chuàng)建的文件。在Android N上使用該模式將拋出SecurityException異常逢勾。
MODE_WORLD_WRITEABLE
:允許其他應(yīng)用寫(xiě)入這個(gè)模式創(chuàng)建的文件。在Android N上使用該模式將拋出SecurityException異常藐吮。
MODE_APPEND
:如果文件已經(jīng)存在了溺拱,則在文件的尾部添加數(shù)據(jù)逃贝。
MODE_MULTI_PROCESS
:SharedPreferences加載標(biāo)志,當(dāng)設(shè)置了該標(biāo)志迫摔,則在磁盤(pán)上的文件將會(huì)被檢查是否修改了沐扳,盡管SharedPreferences實(shí)例已經(jīng)在該進(jìn)程中被加載了。(雞肋句占,不要用沪摄,推薦用ContentProvider)