Android/Java

안드로이드 SharedPreferences Singleton 생성

easy-1 2021. 6. 10. 17:36

<개요>

데이터를 로컬에 저장하는데 사용되는 SharedPreferences 클래스를 매번 호출하기보다

Singleton 으로 만들어 매번 객체를 생성하는 메모리 낭비를 줄일 수 있음


<적용 방법>

1. 싱글톤 PrefsHelper 클래스 생성

2. 각 데이터 타입에 맞게 read, write 모두 할 수 있도록 생성

public class PrefsHelper {

    public static final String PREFERENCE_NAME = "HELPER";
    private static SharedPreferences prefs;
    private static SharedPreferences.Editor prefsEditor;

    // SingleTon 으로 생성
    private static class LazyHolder {
        public static final PrefsHelper uniqueInstance = new PrefsHelper();
    }

    public static PrefsHelper getInstance() {
        return LazyHolder.uniqueInstance;
    }

    // init
    public static void init(Context context) {
        prefs = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
        prefsEditor = prefs.edit();
    }

    // String read, write
    public static String read(String key, String defValue) {
        return prefs.getString(key, defValue);
    }

    public static void write(String key, String value) {
        prefsEditor.putString(key, value).apply();
    }

    // Integer read, write
    public static Integer read(String key, int defValue) {
        return prefs.getInt(key, defValue);
    }

    public static void write(String key, Integer value) {
        prefsEditor.putInt(key, value).apply();
    }

    // boolean read, write
    public static boolean read(String key, boolean defValue) {
        return prefs.getBoolean(key, defValue);
    }

    public static void write(String key, boolean value) {
        prefsEditor.putBoolean(key, value).apply();
    }

    // clear
    public static void destroyPref() {
        prefsEditor.clear().apply();
    }
}