獲取 SharedPreferences 有 2 種方式,第一種以名稱爲索引,第二種以 Activity 爲索引。html
1. getSharedPreferences()java
用於知足如下三種需求:須要多個 SharedPreferences 對象、但願 SharedPreferences 以名稱來索引、須要多個 Activity 共用 SharedPreferences,示例代碼以下:android
Context context = getActivity(); SharedPreferences sharedPref = context.getSharedPreferences( getString(R.string.preference_file_key), Context.MODE_PRIVATE);
其中, Context 能夠爲任意類型,並非必須爲 Activity 的 Context。app
2. getPreferences()code
若是一個 Activity 只須要一個 SharedPreferences 對象,那麼能夠直接調用這個方法,不須要提供名稱,這樣的 SharedPreferences 以 Activity 爲索引。htm
示例代碼以下:對象
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
若是但願該 SharedPreferences 對象能夠被其餘任何 app 訪問,能夠用 MODE_WORLD_READABLE 或 MODE_WORLD_WRITEABLE 來建立 SharedPreferences 文件。索引
經過 sharedPref.edit()
方法獲得 editor 後,能夠用 putInt() 等方法來寫入數據,並經過 commit()
方法來提交,示例代碼以下:get
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putInt(getString(R.string.saved_high_score), newHighScore); editor.commit();
commit()
是當即執行的,若是採用 apply()
方法則會在空閒時執行,有利於提升 app 的流暢度。string
讀 SharedPreferences 與寫相對應,示例代碼以下:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); int defaultValue = getResources().getInteger(R.string.saved_high_score_default); long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);