자동 로그인 여부, 또는 설정에서 저장했던 값 등


앱이 종료되어도 보존되어야 하는 데이터를 저장할 때 


흔히 SharedPreferences를 사용한다. 


1SharedPreferences pref = mContext.getSharedPreferences(com.exam.pref,
2            Activity.MODE_PRIVATE);
3SharedPreferences.Editor editor = pref.edit();
4editor.putString("key", value);
5editor.commit();


보통 이런식으로 사용하는데 이는 키 값을 수정 할 일이 있거나


찾을 일이 있을 때 따로 키 목록을 작성해 


놓은 곳이 없다면 나중에 관리가 힘들어지는 단점이 있다. 




그래서 아예  Preference 클래스를 하나 만들어 두고 그 클래스에 


int, String, boolean을 담고 꺼내는 getter, setter 매소드와 


사용하는 키 값을 모두 선언하여 


클래스에 점만 찍으면 키, 저장, 꺼내쓰기가 가능하도록 하였다. 



01public class RbPreference {
02 
03    private final String PREF_NAME = "com.rabiaband.pref";
04 
05    public final static String PREF_INTRO_USER_AGREEMENT ="PREF_USER_AGREEMENT";
06    public final static String PREF_MAIN_VALUE = "PREF_MAIN_VALUE";
07     
08 
09    static Context mContext;
10 
11    public RbPreference(Context c) {
12        mContext = c;
13    }
14 
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();
19 
20        editor.putString(key, value);
21        editor.commit();
22    }
23 
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();
28 
29        editor.putBoolean(key, value);
30        editor.commit();
31    }
32 
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();
37 
38        editor.putInt(key, value);
39        editor.commit();
40    }
41 
42    public String getValue(String key, String dftValue) {
43        SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME,
44                Activity.MODE_PRIVATE);
45 
46        try {
47            return pref.getString(key, dftValue);
48        catch (Exception e) {
49            return dftValue;
50        }
51 
52    }
53 
54    public int getValue(String key, int dftValue) {
55        SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME,
56                Activity.MODE_PRIVATE);
57 
58        try {
59            return pref.getInt(key, dftValue);
60        catch (Exception e) {
61            return dftValue;
62        }
63 
64    }
65 
66    public boolean getValue(String key, boolean dftValue) {
67        SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME,
68                Activity.MODE_PRIVATE);
69 
70        try {
71            return pref.getBoolean(key, dftValue);
72        catch (Exception e) {
73            return dftValue;
74        }
75    }
76}


위와 같이 상단에 각각 사용할 키를 선언하고 타입별로 같은 이름의 setter,getter 매소드를


만들어 놓으면 어디서든 위 클래스를 이용하여 해당키와 한가지 매소드로 원하는 작업 수행이 가능하다.



1RbPreference pref = new RbPreference(this);
2 
3// set
4pref.put(RbPreference.PREF_USER_AGREEMENT, true);
5 
6// get
7pref.getValue(RbPreference.PREF_USER_AGREEMENT, false);


이런식으로 사용된다. 



+ Recent posts