一、什么是SharedPreferences
由英文直譯過來,是叫做參數共享,即可以用來共享簡單參數的一個簡單存儲類。
二、實現原理
儲存的內容會以鍵值對的形式儲存在data文件夾下的xml格式文件下,所以不太利于儲存格式復雜的內容。
三、代碼實現
先上代碼
//SharedPreferences spf = PreferenceManager.getDefaultSharedPreferences(this);//建立默認的spf,文件名為當前的包名
SharedPreferences spf = getSharedPreferences("mySpf",MODE_PRIVATE);//第一個參數是儲存文件名,第二參數儲存類型
SharedPreferences.Editor editor = spf.edit();
editor.putString("name","張三");
editor.putInt("age",13);
editor.putBoolean("flag",true);
editor.apply();//事務提交
editor.remove("flag");
editor.commit();
Log.i("info",spf.getString("name",""));
- 儲存時通過SharedPreferences類下的Editor類儲存和移除,必須提交事務才會生效。
- 獲取通過spf的get方法獲取。
commit()和apply()的區別:
apply沒有返回值而commit返回boolean表明修改是否提交成功。
apply是將修改數據原子提交到內存, 而后異步真正提交到硬件磁盤, 而commit是同步的提交到硬件磁盤。因此,在多個并發的提交commit的時候,他們會等待正在處理的commit保存到磁盤后在操作,從而降低了效率。而apply只是原子的提交到內容,后面有調用apply的函數的將會直接覆蓋前面的內存數據,這樣從一定程度上提高了很多效率。
apply方法不會提示任何失敗的提示。
由于在一個進程中,sharedPreference是單實例,一般不會出現并發沖突,如果對提交的結果不關心的話,建議使用apply,當然需要確保提交成功且有后續操作的話,還是需要用commit的。