자동 로그인 여부, 또는 설정에서 저장했던 값 등
앱이 종료되어도 보존되어야 하는 데이터를 저장할 때
흔히 SharedPreferences를 사용한다.
1 2 3 4 5 | SharedPreferences pref = mContext.getSharedPreferences(com.exam.pref, Activity.MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.putString( "key" , value); editor.commit(); |
보통 이런식으로 사용하는데 이는 키 값을 수정 할 일이 있거나
찾을 일이 있을 때 따로 키 목록을 작성해
놓은 곳이 없다면 나중에 관리가 힘들어지는 단점이 있다.
그래서 아예 Preference 클래스를 하나 만들어 두고 그 클래스에
int, String, boolean을 담고 꺼내는 getter, setter 매소드와
사용하는 키 값을 모두 선언하여
클래스에 점만 찍으면 키, 저장, 꺼내쓰기가 가능하도록 하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | public class RbPreference { private final String PREF_NAME = "com.rabiaband.pref" ; public final static String PREF_INTRO_USER_AGREEMENT = "PREF_USER_AGREEMENT" ; public final static String PREF_MAIN_VALUE = "PREF_MAIN_VALUE" ; private Context mContext; public RbPreference(Context c) { mContext = c.getApplicationContext(); } public void put(String key, String value) { SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME, Activity.MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.putString(key, value); editor.commit(); } public void put(String key, boolean value) { SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME, Activity.MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.putBoolean(key, value); editor.commit(); } public void put(String key, int value) { SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME, Activity.MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.putInt(key, value); editor.commit(); } public String getValue(String key, String dftValue) { SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME, Activity.MODE_PRIVATE); try { return pref.getString(key, dftValue); } catch (Exception e) { return dftValue; } } public int getValue(String key, int dftValue) { SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME, Activity.MODE_PRIVATE); try { return pref.getInt(key, dftValue); } catch (Exception e) { return dftValue; } } public boolean getValue(String key, boolean dftValue) { SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME, Activity.MODE_PRIVATE); try { return pref.getBoolean(key, dftValue); } catch (Exception e) { return dftValue; } } } |
위와 같이 상단에 각각 사용할 키를 선언하고 타입별로 같은 이름의 setter,getter 매소드를
만들어 놓으면 어디서든 위 클래스를 이용하여 해당키와 한가지 매소드로 원하는 작업 수행이 가능하다.
1 2 3 4 5 6 7 | RbPreference pref = new RbPreference( this ); // set pref.put(RbPreference.PREF_USER_AGREEMENT, true ); // get pref.getValue(RbPreference.PREF_USER_AGREEMENT, false ); |
이런식으로 사용된다.
출처 : http://muzesong.tistory.com/79