SharedPreferencesの基本的な使い方は以下をご覧ください。
SharedPreferencesの使い方(基礎編)
応用編では実際にアプリを作る際にどうやって使ってるの?ってところを書きたいと思います。
私はアプリ独自のPreferenceクラスを作って、そのクラスの中でSharedPreferencesのインスタンスを作ったり、更新や保存ができるようにしています。
インスタンスの取得方法
SharedPreferencesのインスタンスは下記のような形で取得できるようにします。
Gsonを使っているのはPreferenceクラス自体をJson形式のString型に変換して、保存しちゃおうということです。
Gsonの導入方法や使い方は他の方もたくさん書いているので、そちらを参考にしてください。
public static Preference newInstance(Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
Gson gson = new Gson();
String prefsStr = prefs.getString(PREFERENCE_KEY, "");
if (!prefsStr.isEmpty()) {
return gson.fromJson(prefsStr, Preference.class);
}
return new Preference();
}
設定データの変更方法
Preferenceクラス自体が設定用オブジェクトとsetter/getterを持っているので、変更する時はそれぞれのオブジェクトのsetterメソッドを呼び出して変更します。
public class Preference {
private boolean isBool;
public boolean isBool() {
return this.isBool;
}
public void setBool(boolean isBool) {
this.isBool = isBool;
}
}
設定データの保存方法
変更した内容を保存する用にsaveメソッドも作ります。
前述の通りGsonを使ってPreferenceクラスをJson形式にして保存します。
public void save(Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
Gson gson = new Gson();
prefs.edit().putString(PREFERENCE_KEY, gson.toJson(this)).apply();
}
おわりに
Gsonを利用することによって、String, boolean, int, long, float以外の独自クラスなんかも保存できるようになります。
例えばPersonクラスなんてのを作って保存することも可能ですね。
Androidのデータの保存方法は他にもsqliteなどあるので、どういった情報をSharedPreferencesで持つべきか、持たないべきかみたいな考えはあると思います。
実際に使う時はそういったデータの扱い方も考えた方がいいですね。