[SharedPreference]

Android/Class 2014. 7. 24. 18:00 |


SharedPreferences는 크게 두 가지 방법으로 불러올 수 있다.

먼저, 사용자가 PreferenceActivity을 구현한 경우, 이는 기본설정값으로 다음과 같이 불러온다.


SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);


context에는 보통 this를 쓰며, Activity를 상속받지 않은 클래스에서는 개별 방법으로 context를 넘긴다.

이는 기본적으로 패키지명으로 xml파일이 작성된다. 이 경우 앱의 기본설정값을 저장하기 때문에 위에 나열한 상황에서 사용하기엔 적절치 않다.


해서, 따로 설정값을 저장하여 사용하는 방법을 살펴보자.




SharedPreferences cache= getSharedPreferences("cache", Activity.MODE_PRIVATE);




위 방법은 cache라는 설정값을 불러오며, 없을 시 자동 생성된다.

getSharedPreferences의 첫 번째 인자값이 xml 파일의 파일명이 되는 것이다.




MODE는 파일생성모드로,

MODE_APPEND 는 파일이 존재할 때 마지막부분에 계속 붙여서 작성하는 방식이고,

MODE_PRIVATE 는 위 메서드의 기본값으로, 호출한 앱에서만 파일 사용이 가능하다.

MODE_WORLD_READABLE 는 모든 앱에서 이 파일을 읽을 수 있는 것이고,

MODE_WORLD_WRITEABLE 는 모든 앱에서 이 파일을 수정할 수 있는 것이다.

MODE_MULTI_PROCESS 라는 모드도 있는데 이는 다른 프로세스에서 사용중인지 체크한 후 사용




getSharedPreferences는 Context 메서드이기 때문에,

Activity를 상속받은 클래스에서는 바로 사용 가능하지만 그렇지 않을 때는

context 객체를 전달받은 후 context.getSharedPreferences()로 사용하면 되겠다.



SharedPreferences 객체에 쓰고 읽는 것은 간단하다.

쓰는법부터 살펴보자면,






SharedPreferences cache = getSharedPreferences("cache", Activity.MODE_PRIVATE);

SharedPreferences.Editor editor = cache.edit();

editor.putString("ment", editText.getText().toString());

editor.commit();







위와 같은 방식으로 자료를 저장할 수 있다.

commit()은 편집을 끝내고 저장하는 메서드기 때문에 반드시 호출해야 한다.





값을 가져오는 것은 더욱 간단하다.





SharedPreferences cache = getSharedPreferences("cache", Activity.MODE_PRIVATE);

editText.setText(cache.getString("ment", null));




getString에서 두 번째 인수는 ment라는 key가 없을 때 넣어줄 기본값이다.



Posted by 소망아기
: