LoginSignup
5
5

More than 5 years have passed since last update.

SharedPreferencesの使い方(応用編)

Posted at

SharedPreferencesの基本的な使い方は以下をご覧ください。
SharedPreferencesの使い方(基礎編)

応用編では実際にアプリを作る際にどうやって使ってるの?ってところを書きたいと思います。

私はアプリ独自のPreferenceクラスを作って、そのクラスの中でSharedPreferencesのインスタンスを作ったり、更新や保存ができるようにしています。

インスタンスの取得方法

SharedPreferencesのインスタンスは下記のような形で取得できるようにします。
Gsonを使っているのはPreferenceクラス自体をJson形式のString型に変換して、保存しちゃおうということです。
Gsonの導入方法や使い方は他の方もたくさん書いているので、そちらを参考にしてください。

Preference.java
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メソッドを呼び出して変更します。

Preference.java
public class Preference {
    private boolean isBool;
    public boolean isBool() {
        return this.isBool;
    }
    public void setBool(boolean isBool) {
        this.isBool = isBool;
    }
}

設定データの保存方法

変更した内容を保存する用にsaveメソッドも作ります。
前述の通りGsonを使ってPreferenceクラスをJson形式にして保存します。

Preference.java
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で持つべきか、持たないべきかみたいな考えはあると思います。
実際に使う時はそういったデータの扱い方も考えた方がいいですね。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5