Nuke Olaf - Log Store

[Android] 안드로이드 - Shared Preference 란 본문

Android

[Android] 안드로이드 - Shared Preference 란

NukeOlaf 2019. 12. 20. 15:05

1. Shared Preference 의 사전적 의미

 

https://www.dictionary.com/browse/share

Shared : 함께 쓰다, 공유하다, 나누다

noun

the full or proper portion or part allotted or belonging to or contributed or owed by an individual or group.

one of the equal fractional parts into which the capital stock of a joint-stock company or a corporation is divided.

 

verb (used with object), shared, shar·ing.

to divide and distribute in shares; apportion.

to use, participate in, enjoy, receive, etc., jointly:The two chemists shared the Nobel prize.

 

verb (used without object), shared, shar·ing.

to have a share or part; take part (often followed by in).

to divide, apportion, or receive equally.

 

https://www.dictionary.com/browse/preference?s=t

preference : 선호하다, 더 좋아하다, 택하다

noun

the act of preferring.

the state of being preferred.

that which is preferred; choice:His preference is vanilla, not chocolate.

a practical advantage given to one over others.

a prior right or claim, as to payment of dividends or to assets upon dissolution.

the favoring of one country or group of countries by granting special advantages over others in international trade.

 

사전에서 찾아본 내용들을 종합하여 유추해보면, Shared Preference 란 '공유를 선호하는 무언가' 라고 생각해 볼 수 있다.

 

2. Shared Preference 는 고유명사이다. IT 사전에서 말하는 Shared Preference 란 무엇인가?

https://www.geeksforgeeks.org/shared-preferences-in-android-with-examples/

" One of the most Interesting Data Storage option Android provides its users is Shared Preferences. Shared Preferences is the way in which one can store and retrieve small amounts of primitive data as key/value pairs to a file on the device storage such as String, int, float, Boolean that make up your preferences in an XML file inside the app on the device storage. Shared Preferences can be thought of as a dictionary or a key/value pair. For example, you might have a key being “username” and for the value, you might store the user’s username. And then you could retrieve that by its key (here username). You can have simple shared preferences API that you can use to store preferences and pull them back as and when needed. Shared Preferences class provides APIs for reading, writing and managing this data. "

" Android가 사용자에게 제공하는 가장 흥미로운 데이터 저장 옵션 중 하나는 Shared Preferences이다. Shared Preferences는 응용 프로그램 내부의 XML 파일에서 환경 설정을 구성하는 String, int, float, Boolean과 같은 원시형 데이터 들을 장치 스토리지의 파일에 key/value 쌍으로 소량 저장하고 검색하는 방법이다. 공유 환경 설정은 사전 또는 key/value 쌍으로 생각할 수 있다. 예를 들어, "username" 라는 key값으로 사용자의 이름을 저장할 수 있다. 그런 다음 key 값으로 (여기서 username) username 의 value 값을 검색 할 수 있다. 환경 설정을 저장하고 필요할 때 언제든지 가져 오는 데 사용할 수 있는 간단한 공유 환경 설정 API를 사용할 수 있다. Shared Preferences 클래스는이 데이터를 읽고 쓰고 관리하기위한 API를 제공한다. "

그래서, sharedpreference 란?

셰어드란 DBMS(Data Base Mangement System), 안드로이드에서 지원하는 로컬 데이터베이스 저장 관리 시스템이다. 로컬 데이터베이스에서 local 이란 말은 핸드폰 내에서 사용하고 만들어진다는 뜻으로 이해할 수 있다. 즉, 핸드폰 내에서 사용자가 앱을 이용하며 만들어지는 데이터들을 핸드폰 내에 저장할 수 있도록 도와주는 시스템이라고 생각할 수 있다. 셰어드를 이용해서 앱의 데이터를 저장할  있다는 뜻이다.

한 문장으로 정리하기 : Shared Preference 란 -> 안드로이드에서 앱의 데이터를 저장하는 방식 중의 하나이다.

 

 

3. Shared Preference 를 왜 사용하는가?

" Shared Preferences is suitable in different situations. For example, when the user’s settings need to be saved or to store data that can be used in different activities within the app. As you know, onPause() will always be called before your activity is placed in the background or destroyed, So for the data to be saved persistently we prefer saving it in onPause(), which could be restored in onCreate() of the activity. The data stored using shared preferences are kept private within the scope of the application. However, shared preferences are different from that activity’s instance state. "

" shared preference 은 다양한 상황에 적합합니다. 예를 들어, 사용자 설정을 저장하거나 앱 내에서 다양한 활동에 사용할 수있는 데이터를 저장해야 할 때. 아시다시피 onPause ()는 활동이 백그라운드에 배치되거나 파괴되기 전에 항상 호출되므로 데이터를 지속적으로 저장하려면 onPause ()에 저장하는 것이 좋습니다. onPause ()는 활동의 onCreate ()에서 복원 할 수 있습니다. . shared preference 를 사용하여 저장된 데이터는 응용 프로그램 범위 내에서 비공개로 유지됩니다. 그러나 공유 환경 설정은 해당 활동의 인스턴스 상태와 다릅니다. "

그래서, sharedpreference 사용해야하는 이유는?

첫째로는, 데이터를 저장해야 하기 때문이다. 셰어드가 아니더라도, 데이터를 저장하는 기능을 구현하지 않으면, 어플리케이션을 껏다 킬 경우 지금까지 작성한 데이터가 전부 사라지게 된다. 데이터를 저장하지 못한다면, 만약 핸드폰 게임을 하고 있는데 만렙을 찍어도 핸드폰을 껐다 켜면 지금까지 플레이한 데이터가 사라지게 된다. 그렇다면 엄청나게 불편할 것이다. 나의 경우에는 카메라앱으로 사진을 찍어도, 찍은 사진을 저장하지 못해서 매번 내 카메라앱을 시연할 때마다 사진을 계속 찍어서 보여주어야 했다.

둘째로는, Shared Prefence 를 사용하면 key, value 값으로 데이터를 저장할 수 있기 때문이다.

 

4. Shared Preference 를 어떻게 사용하는가?

--==<< 저장하는 방법 >>==--

(1) Shared Preference 객체를 생성한다

//getting shared preferences
SharedPreferences sp = getSharedPreferences("your_shared_pref_name", MODE_PRIVATE);

 

(2) editor 를 초기화한다

//initializing editor
SharedPreferences.Editor editor = sp.edit();

 

(3) editor 안에 원하는 value 를 넣는다 (putDataType() 메서드를 사용)

- key 값은 항상 String 이어야 하며, value 값에는 어떤 자료형이든 사용할 수 있다.

editor.putString("stringkey", "value");
editor.putBoolean("boolkey", true);
editor.putFloat("floatkey", 4.3434f);
editor.putLong("longkey", 343434343434343l);

 

(4) apply 또는 commit 을 사용하여 editor 에 넣은 값들을 저장해준다

editor.apply();
editor.commit();

 

* 같은 key 값으로 저장하게되면, 새로 저장한 값이 원래 저장한 값에 덮어쓰기가 된다.

 

--==<< 삭제하는 방법 >>==--

(1) remove() 함수를 사용하여, 원하는 key 값만 지우는 방법

//removing value
editor.remove("keytoberemoved");
        
//commiting the changes
editor.apply();

 

(2) clear() 함수를 사용하여, editor 에 있는 모든 내용을 지우는 방법

editor.clear();
editor.apply();

 

--==<< 불러오는 방법 >>==--

(1) Shared Preference 객체를 생성한다

//getting shared preferences
SharedPreferences sp = getSharedPreferences("your_shared_pref_name", MODE_PRIVATE);

 

(2) editor 를 초기화한다

//initializing editor
SharedPreferences.Editor editor = sp.edit();

 

(3) getDataType() 메서드를 활용해서 원하는 key 값의 value 를 가져온다

sp.getString("stringkey", "default value");
sp.getBoolean("boolkey", false);
sp.getFloat("floatkey", 0.0f);
sp.getLong("longkey", 0l);

 

Comments