可以用SharedPreferences API存儲鍵值對,並且提供了簡單的訪問方法,還可以控制SharedPreferences文件的訪問權限。
下面介紹SharedPreferences API的使用方法。
得到一個SharedPreferences對象
用以下方法得到或創建一個SharedPreferences文件對象
getSharedPreferences() — Use this if you need multiple shared preference files identified by name, which you specify with the first parameter. You can call this from anyContext in your app.
getPreferences() — Use this from an Activity if you need to use only one shared preference file for the activity. Because this retrieves a default shared preference file that belongs to the activity, you don't need to supply a name.
例如,下面代碼在一個Fragment中執行,得到一個由R.string.preference_file_key資源標志的SharedPreferences文件,並用private模式打開,表示只能在你自己的app中訪問這個文件
[java]
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE);
命名SharedPreference文件時最好用app范圍內唯一的名字,像com.example.myapp.PREFERENCE_FILE_KEY
另外,getPreferences()可以得到一個僅屬於當前activity的SharedPreference文件
[java]
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
如果以MODE_WORLD_READABLE 或者 MODE_WORLD_WRITEABLE打開,那麼其他的app也可以訪問數據
寫入 Shared Preferences文件
要寫入,先通過edit()創建一個SharedPreferences.Editor對象
通過putInt(), putString()等方法放入數據,調用commit()保存改變,例如
[java]
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();
從 Shared Preferences文件讀取
要從文件中讀取數據,可以調用getInt(),getString()等方法,例如:
[java]
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
long defaultVal = getResources().getInteger(R.string.saved_high_score_default));
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultVal);
第二個參數表示如果提供的鍵不存在時采用的默認值。