技術備忘録・キャリアの見直し・情報収集など。


SharedPreferenceおさらい

ネタはある(というか書き溜めている)のに更新できていない…。
ので、職場で更新する暴挙に出た!
年末だし、レスポンス遅いし、やることはやってるからいいよね。。

「Gson」というライブラリを使うにあたって、Preferenceをおさらいしておこう~
と、急に思い立ったのでざっくりまとめます。

続きを読む

そもそもSharedPreferenceとは

ざっくりこんな感じ。
Androidバイス内にデータを保存する仕組みだよ
・SharedPreference自体はXMLファイルだよ
・アプリを削除しなければ永続的にデータ保持できるよ
・キー・バリュー形式で保存するよ
・環境設定の保存などによく使われるよ
・保存できるデータ型には String, int, float, long, boolean, Set<String>があるよ

基本操作

    // インスタンスの取得
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    SharedPreferences.Editor editor = prefs.edit();

    // データの書き込み
    editor.putString(key, value);
    editor.apply();

    // データの書き出し
    String test = prefs.getString(key);

SharedPreferences.Editor  |  Android Developers

個人的にやっている実装方法

ラッパークラスを作っておくと、外からそれを呼ぶだけでOKになるので楽!
★別ページで使用するメソッドについてはこちら。
手を加えればオブジェクトっぽいものも保存できて便利です。 aimy74.hatenablog.com

public class PreferenceManager {
    // KEYS
    private static final String KEY_SAMPLE = "keySample";
    private static final String KEY_OBJECT = "keyObject";
    // VALUES(デフォルト定義など、必要であれば)

    // テキストを保存する
    public static void setText(Context context, String value){
        save(context, KEY_SAMPLE, value);
    }

    // テキストを読み込む
    public static String getText(Context context) {
        return readString(context, KEY_SAMPLE);
    }

    // ★別ページで使用する
    public static void setObject(Context context, String value){
        save(context, KEY_OBJECT, value);
    }
    public static String getObject(Context context) {
        return readString(context, KEY_OBJECT);
    }

    // 書き込みメソッドのラッパー
    private static void save(Context context, String key, String value) {
        SharedPreferences prefs = android.preference.PreferenceManager.getDefaultSharedPreferences(context);
        SharedPreferences.Editor editor = prefs.edit();
        editor.putString(key, value);
        editor.apply();
    }

    // 読み出しメソッドのラッパー
    private static String read(Context context, String key) {
        SharedPreferences prefs = android.preference.PreferenceManager.getDefaultSharedPreferences(context);
        return prefs.getString(key, "");
    }
}

呼ぶときはこんな感じ。

    // 書き込み
    PreferenceManager.setText(getAplicationContext(),"テスト");

    // 読み出し
    String sampleText = PreferenceManager.setText(getAplicationContext());

以上、個人的なおさらいでした。