MyCloud
[안드로이드] SharedPreference 사용 방법 본문
안드로이드의 SharedPreference
보통 안드로이드에서 데이터를 저장하는 방법으로 데이터베이스를 사용합니다.
하지만 데이터베이스를 사용하지 않고도 데이터를 저장할 수 있는 방법이 있습니다.
바로 SharedPreference를 사용하는 방법입니다 !
SharedPreference는 Map구조인 key-value 형태로 데이터를 저장합니다.
이렇게 저장된 데이터는 어플리케이션이 삭제되기 전까지 내부에 파일형태로 보관됩니다.
SharedPreference 사용하는 방법
SharedPreference를 사용하기 위해서는 먼저 클래스를 생성해야 합니다.
SharedPreferences pref = getSharedPreferences("Game", Activity.MODE_PRIVATE);
위의 생성과정에서 "Game"은 Preference의 이름을 의미합니다.
데이터를 불러올 때 먼저 저 이름의 파일을 찾게 됩니다.
뒤의 Activity.MODE_PRIVATE는 mode를 설정하는 부분입니다.
MODE_PRIVATE는 자기 앱에서만 사용하도록 설정하는 기본 값이며,
이외에도 MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE이 있습니다.
다음은 Preference에 값을 저장하는 과정입니다.
private void saveScore() {
SharedPreferences pref = getSharedPreferences("Game", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putInt("score", 10000);
editor.commit();
}
1. Preference 내에 있는 데이터에 대한 수정을 위해 Editor 객체를 생성합니다.
2. Editor에 putInt() 메서드를 통해 score라는 키 값에 10000점을 값으로 저장합니다.
3. commit() 메서드를 통해 변경사항을 저장합니다.
다음은 Preference에 저장된 값을 불러오는 과정입니다.
private void loadScore() {
SharedPreferences pref = getSharedPreferences("Game", Activity.MODE_PRIVATE);
int score = pref.getInt("score", 0);
Toast.makeText(MainActivity.this, "score : " + score, Toast.LENGTH_LONG).show();
}
1. 값이 저장된 Preference 를 불러오기 위해 getSharedPreferences() 메서드를 호출합니다.
2. getInt() 메서드를 통해 score라는 키 값에 저장된 10000점을 불러와 score 변수에 저장합니다.
3. 불러온 값을 Toast 메세지를 통해 보여줍니다.
* ("score", 0)은 저장에 실패하거나 오류가 발생하면 defalut 값으로 0이 저장됩니다.
값을 저장하거나 불러오는데 제공하는 타입은 다음과 같이 6가지가 있습니다.
메서드 | 설 명 |
getBoolean(key, value) | preference로부터 boolean 값을 반환합니다. |
getFloat(key, value) |
preference로부터 float 값을 반환합니다. |
getInt(key, value) |
preference로부터 int 값을 반환합니다. |
getLong(key, value) |
preference로부터 long 값을 반환합니다. |
getString(key, value) |
preference로부터 string 값을 반환합니다. |
getStringSet(key, value) |
preference로부터 stringSet 값을 반환합니다. |
값을 삭제하는 방법은 다음과 같이 2가지가 있습니다.
editor.remove("score");
editor.clear();
remove() 메서드를 통해 key에 저장된 삭제하는 방법,
clear() 메서드를 통해 저장된 모든 데이터를 삭제하는 방법이 있습니다.
+ 주의 : 설정에서 어플 데이터 지우기를 통해 데이터 삭제를 하면 저장된 값이 사라집니다.
그리고 특수문자의 경우 저장에 실패하는 경우가 많기 때문에 유니코드로 변환하는 과정이 필요합니다.
SharedPreference는 위와 같이 게임에서 점수를 저장할 때 뿐만 아니라,
자동 로그인할 때, 환경설정 저장 등 다양한 경우에 사용되기 때문에 알아두시면 좋을 것 같습니다 !
참고 : http://developer.android.com/intl/ko/guide/topics/data/data-storage.html#pref
'Programming > Android' 카테고리의 다른 글
[안드로이드] 간단한 로그인 화면 만들기 (2) (14) | 2016.05.01 |
---|---|
[안드로이드] 간단한 로그인 화면 만들기 (1) (0) | 2016.05.01 |
[안드로이드] 액티비티의 수명주기 (2) | 2016.04.16 |
[안드로이드] 머티리얼 디자인을 위한 라이브러리 (AppCompat, Design Library) (0) | 2016.04.09 |
[안드로이드] 언어에 따른 리소스 설정방법 (0) | 2016.04.09 |