今回は簡単にデータを永続化することができる、「プリファレンス」についてです。
プリファレンスに保存できるデータ型は以下の6つです。
- boolean
- int
- float
- long
- String
- Set
各値は一つのファイルにKey-Value形式で保存されます。
プリファレンスはよく使うので、今回はアクセスしやすいようにラッパークラスを作成しました。
public class PreferenceAccessor {
/**
* プリファレンスを保存するファイル名
*/
private static final String PREFERENCE_NAME = "user_data";
/**
* キーで指定したboolean型のプリファレンスを取得する。
* @param context コンテキスト
* @param key キー
* @param defaultValue デフォルト値
* @return プリファレンス値
*/
public static boolean getPreference(Context context, String key, boolean defaultValue) {
SharedPreferences sharedPreferences = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
return sharedPreferences.getBoolean(key, defaultValue);
}
/**
* キーで指定したプリファレンスにboolean型の値を設定する。
* @param context コンテキスト
* @param key キー
* @param value 設定値
*/
public static void setPreference(Context context, String key, boolean value) {
SharedPreferences sharedPreferences = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
sharedPreferences.edit().putBoolean(key, value).apply();
}
/**
* キーで指定したint型のプリファレンスを取得する。
* @param context コンテキスト
* @param key キー
* @param defaultValue デフォルト値
* @return プリファレンス値
*/
public static int getPreference(Context context, String key, int defaultValue) {
SharedPreferences sharedPreferences = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
return sharedPreferences.getInt(key, defaultValue);
}
/**
* キーで指定したプリファレンスにint型の値を設定する。
* @param context コンテキスト
* @param key キー
* @param value 設定値
*/
public static void setPreference(Context context, String key, int value) {
SharedPreferences sharedPreferences = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
sharedPreferences.edit().putInt(key, value).apply();
}
/**
* キーで指定したlong型のプリファレンスを取得する。
* @param context コンテキスト
* @param key キー
* @param defaultValue デフォルト値
* @return プリファレンス値
*/
public static long getPreference(Context context, String key, long defaultValue) {
SharedPreferences sharedPreferences = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
return sharedPreferences.getLong(key, defaultValue);
}
/**
* キーで指定したプリファレンスにlong型の値を設定する。
* @param context コンテキスト
* @param key キー
* @param value 設定値
*/
public static void setPreference(Context context, String key, long value) {
SharedPreferences sharedPreferences = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
sharedPreferences.edit().putLong(key, value).apply();
}
/**
* キーで指定したfloat型のプリファレンスを取得する。
* @param context コンテキスト
* @param key キー
* @param defaultValue デフォルト値
* @return プリファレンス値
*/
public static float getPreference(Context context, String key, float defaultValue) {
SharedPreferences sharedPreferences = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
return sharedPreferences.getFloat(key, defaultValue);
}
/**
* キーで指定したプリファレンスにfloat型の値を設定する。
* @param context コンテキスト
* @param key キー
* @param value 設定値
*/
public static void setPreference(Context context, String key, float value) {
SharedPreferences sharedPreferences = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
sharedPreferences.edit().putFloat(key, value).apply();
}
/**
* キーで指定したString型のプリファレンスを取得する。
* @param context コンテキスト
* @param key キー
* @param defaultValue デフォルト値
* @return プリファレンス値
*/
public static String getPreference(Context context, String key, String defaultValue) {
SharedPreferences sharedPreferences = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
return sharedPreferences.getString(key, defaultValue);
}
/**
* キーで指定したプリファレンスにString型の値を設定する。
* @param context コンテキスト
* @param key キー
* @param value 設定値
*/
public static void setPreference(Context context, String key, String value) {
SharedPreferences sharedPreferences = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
sharedPreferences.edit().putString(key, value).apply();
}
/**
* キーで指定したSet<String>型のプリファレンスを取得する。
* @param context コンテキスト
* @param key キー
* @param defaultValue デフォルト値
* @return プリファレンス値
*/
public static Set<String> getPreference(Context context, String key, Set<String> defaultValue) {
SharedPreferences sharedPreferences = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
return sharedPreferences.getStringSet(key, defaultValue);
}
/**
* キーで指定したプリファレンスにSet<String>型の値を設定する。
* @param context コンテキスト
* @param key キー
* @param value 設定値
*/
public static void setPreference(Context context, String key, Set<String> value) {
SharedPreferences sharedPreferences = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
sharedPreferences.edit().putStringSet(key, value).apply();
}
/**
* すべてのプリファレンスを削除する。
* @param context コンテキスト
*/
public static void clearPreference(Context context) {
SharedPreferences sharedPreferences = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
sharedPreferences.edit().clear().apply();
}
/**
* 指定したキーのプリファレンスを削除する
* @param context コンテキスト
* @param key キー
*/
public static void removePreference(Context context , String key) {
SharedPreferences sharedPreferences = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
sharedPreferences.edit().remove(key).apply();
}
/**
* 指定したキーが存在するかを判定する
* @param context コンテキスト
* @param key キー
* @return true:存在する/false:存在しない
*/
public static boolean containsKey(Context context ,String key) {
SharedPreferences sharedPreferences = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
return sharedPreferences.contains(key);
}
}