타이탄의 도구들

[Android] SharedPreferences에 대하여 본문

Dev Tools/Android

[Android] SharedPreferences에 대하여

Titan04 2022. 5. 28. 10:48
728x90

 

오랜만에 안드로이드 어플을 개발하다보니, 쉐어드 쓸 일이 생겼는데,

기억이 안나서 과거에 정리해 놓은 자료를 보고 적용했는데, 도움이 많이 되었다.

물론 부족한 자료지만, 나에게는 다 소중한 자산같은 자료들이다 :)

 


 

SharedPreferences의 사전적 의미

 

쉐어드(Shared) : 공유하는

프레퍼런스(Preference) : 우선권, 더 좋아함

 

SharedPreferences란 (고유명사적 의미)

 

데이터를 키와 밸류 형태로 저장하고 불러올 수 있게 하는

안드로이드에서 제공하는 인터페이스다.

interface : 사물과 사물 사이 또는 사물과 인간 사이의 경계에서,

상호 간의 소통을 위해 만들어진 매개체

 

왜 사용하는가?

 

1. 데이터를 서버가 아닌 로컬(휴대폰이라고 생각하면 됨)에 저장하기 위해서

2. 데이터를 의미하는 밸류가 매우 많을 때 키로 밸류들을 묶고,

키에 이름을 지정해 밸류에 쉽고 빠르게 접근하도록 할 수 있기 때문

(사실 이건 키밸류 형태의 데이터에 대한 장점이다.)

3. 사용법이 간단하고, 주로 데이터의 양이 적은 값들을 저장할 때 유용하기 때문

 

어떻게 사용하는가?

SharedPreferences 의 객체를 생성합니다.

Editor 의 객체를 생성합니다.

 

Editor의 사전적 의미

편집자

편집하다 : 일정한 방침 아래 여러가지 재료를 모아 문서 따위를 하나의 작품으로 완성하다.

고유 명사적 의미 + 왜 사용하는가 (developers에서의 정의)

Interface used for modifying values in a SharedPreferences object.

SharedPreferences 객체에서

데이터들을 변경하는데 사용 되는 인터페이스

SharedPreferences 데이터의 메모장과 같은 역할을 한다.

출처 입력

 

 

Editor 객체를 가지고 Key-value 형태의 데이터를 저장 or 수정 or 삭제 합니다.

SharedPreferences 객체를 가지고

저장된 데이터의 Key값을 선언해 데이터를 불러옵니다.

역시 기본은 developers!

https://developer.android.com/reference/android/content/SharedPreferences?hl=ko

SharedPreferences  |  Android developers  |  Android Developers

 

SharedPreferences 선언 후

 

데이터를 입력 또는 삭제하고 싶을 때는 Editor를 이용하고,

데이터를 불러올때는 SharedPreferences 에서 바로 불러오면 됩니다.

(Editor의 경우에는 꼭 apply를 해줘야합니다.)

 

1. 불러오기

SharedPreferences preference = getSharedPreferences("SharedPreferencesName", MODE_PRIVATE);

preference.getString("KeyName", "(default값)");

해당 키에 대한 밸류가 존재하지 않을 때는 (default값)을 가져옵니다.

MODE_PRIVATE : 자신의 앱에서만 데이터를 사용하도록 하는 설정값

MODE_WORLD_READABLE: 외부 앱에서 읽기 가능

MODE_WORLD_WRITEABLE: 외부 앱에서 쓰기 가능

 

보안상의 이유로 MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE은 API LEVEL 17부터 deprecation 되었습니다.

 

deprecate :

비난하다, 반대하다 → 다른 것으로 대체되었거나 될 수 있으니

주의해서 사용하라는 말

 

2. 저장

SharedPreferences preference = getSharedPreferences("SharedPreferencesName", MODE_PRIVATE);

SharedPreferences.Editor editor = preference.edit();

editor.putString("KeyName", "Value");

editor.apply();

 

3. 삭제(해당 "키" 의 데이터만 삭제)

SharedPreferences preference = getSharedPreferences("SharedPreferencesName", MODE_PRIVATE);

SharedPreferences.Editor editor =preference.edit();

editor.remove("KeyName");

editor.apply();

 

4. 전체 삭제

SharedPreferences preference = getSharedPreferences("SharedPreferencesName", MODE_PRIVATE);

SharedPreferences.Editor editor = preference.edit();

editor.clear();

editor.apply();

 

5. 수정

같은 키 값에, value만 바꿔주면 된다. 

SharedPreferences preference = getSharedPreferences("SharedPreferencesName", MODE_PRIVATE);

SharedPreferences.Editor editor = preference.edit();

editor.putString("KeyName", "Value edit");

editor.apply();

 

위의 예시들은 밸류가 String값일때고, 다양한 변수자료형이 올 수 있다.

ex)

getBoolean(String key, boolean value)

getFloat(String key, float value)

getInt(String key, int value)

getLong(String key, long value)

getString(String key, String value)

getStringSet(String key, Set<String> values)

 

또한 해당 어플을 삭제하게 되면 쉐어드로 저장한 데이터도 같이 삭제가 된다.

(직접 어플을 삭제해봤더니 저장한 데이터들이 삭제가 되었다.)

 

728x90
Comments