MyCloud

[안드로이드] SharedPreference 사용 방법 본문

Programming/Android

[안드로이드] SharedPreference 사용 방법

Swalloow 2016. 5. 1. 02:58



안드로이드의 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




Comments