자동 로그인 여부, 또는 설정에서 저장했던 값 등
앱이 종료되어도 보존되어야 하는 데이터를 저장할 때
흔히 SharedPreferences를 사용한다.
1 | SharedPreferences pref = mContext.getSharedPreferences(com.exam.pref, |
2 | Activity.MODE_PRIVATE); |
3 | SharedPreferences.Editor editor = pref.edit(); |
4 | editor.putString( "key" , value); |
보통 이런식으로 사용하는데 이는 키 값을 수정 할 일이 있거나
찾을 일이 있을 때 따로 키 목록을 작성해
놓은 곳이 없다면 나중에 관리가 힘들어지는 단점이 있다.
그래서 아예 Preference 클래스를 하나 만들어 두고 그 클래스에
int, String, boolean을 담고 꺼내는 getter, setter 매소드와
사용하는 키 값을 모두 선언하여
클래스에 점만 찍으면 키, 저장, 꺼내쓰기가 가능하도록 하였다.
01 | public class RbPreference { |
03 | private final String PREF_NAME = "com.rabiaband.pref" ; |
05 | public final static String PREF_INTRO_USER_AGREEMENT = "PREF_USER_AGREEMENT" ; |
06 | public final static String PREF_MAIN_VALUE = "PREF_MAIN_VALUE" ; |
09 | static Context mContext; |
11 | public RbPreference(Context c) { |
15 | public void put(String key, String value) { |
16 | SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME, |
17 | Activity.MODE_PRIVATE); |
18 | SharedPreferences.Editor editor = pref.edit(); |
20 | editor.putString(key, value); |
24 | public void put(String key, boolean value) { |
25 | SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME, |
26 | Activity.MODE_PRIVATE); |
27 | SharedPreferences.Editor editor = pref.edit(); |
29 | editor.putBoolean(key, value); |
33 | public void put(String key, int value) { |
34 | SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME, |
35 | Activity.MODE_PRIVATE); |
36 | SharedPreferences.Editor editor = pref.edit(); |
38 | editor.putInt(key, value); |
42 | public String getValue(String key, String dftValue) { |
43 | SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME, |
44 | Activity.MODE_PRIVATE); |
47 | return pref.getString(key, dftValue); |
48 | } catch (Exception e) { |
54 | public int getValue(String key, int dftValue) { |
55 | SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME, |
56 | Activity.MODE_PRIVATE); |
59 | return pref.getInt(key, dftValue); |
60 | } catch (Exception e) { |
66 | public boolean getValue(String key, boolean dftValue) { |
67 | SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME, |
68 | Activity.MODE_PRIVATE); |
71 | return pref.getBoolean(key, dftValue); |
72 | } catch (Exception e) { |
위와 같이 상단에 각각 사용할 키를 선언하고 타입별로 같은 이름의 setter,getter 매소드를
만들어 놓으면 어디서든 위 클래스를 이용하여 해당키와 한가지 매소드로 원하는 작업 수행이 가능하다.
1 | RbPreference pref = new RbPreference( this ); |
4 | pref.put(RbPreference.PREF_USER_AGREEMENT, true ); |
7 | pref.getValue(RbPreference.PREF_USER_AGREEMENT, false ); |
이런식으로 사용된다.