SharedPreferences

Last-modified: 2014-11-24 (月) 23:38:42

Preference は Androidアプリでデータを保存する方法のひとつ
データをキーと値の組み合わせで保存します

ファイルなどに保存するよりも非常に簡単にデータを保存できます


SharedPreferences

getSharedPreferences(String name, int mode);

まずインスタンスを取得する
SharedPreferences prefs = getSharedPreferences("myprefs", Context.MODE_PRIVATE);

namePreference 自体の名前
modeActivity.MODE_PRIVATE
Activity.MODE_WORLD_READABLE
Activity.MODE_WORLD_WRITEABLE

保存された Preference は data/data/パッケージ名/shared_prefs の中に xmlファイルとして保存される

保存できるデータ形式

String、int、long、float、boolean、Set<String>
(Set の扱いは、 API Level 11 から可能)


保存する

SharedPreferences prefs = getSharedPreferences("myprefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("fruits", "Apple");
editor.apply();

保存されたデータは、XML 形式で以下のように保存される

<map>
  <string name="fruits">Apple</string>
</map>

取得する

getString(String key, String defValue);
getInt(String key, int defValue);
getLong(String key, long defValue);
getBoolean(String key, boolean defValue);
getFloat(String key, float defValue);

haredPreferences prefs = getSharedPreferences("myprefs", Context.MODE_PRIVATE);
String fruits = prefs.getString("fruits", "");

保存先

SharedPreferencesを経由して保存したデータはXMLファイルで保存される。
保存先フォルダはdata/data/アプリのパッケージ名/shared_prefs/
PreferenceManager.getDefaultSharedPreferencesを使った場合、「アプリのパッケージ名_preferences.xml」というファイル名で保存される。
Activity#getSharedPreferencesを使った場合、「引数に指定したname.xml」をファイル名として保存される