티스토리 뷰

개발을 진행하다 보면 특정데이터들을 가지고 있어야 할때가 있습니다. 

앱내부 설정 값이라든가,특정 수치를 가지고 있어야 할때 어떻게 할까요? 

일반적으로 드는 생각은 안드로이드 내 sqlite(DB)를 이용해 각각의 값들을 저장하였다가 SELECT,UPDATE,DELETE등을 통해 값들을 제어하는 방법이 있습니다. 하지만 1~2개의 값들만 가지고 있으면 되는데, 이를 DB까지 써가면서 진행 할경우 개발하는 속도나 효율적인 면에서 큰 손실이 일어나게 됩니다. 배보다 배꼽이 더 큰 경우라고 할수 있습니다. 이럴때 유용하게 사용할수 있는것이 바로 "Preference"입니다.



. Preference란?

Preference는 안드로이드에서 기본적으로 제공해 주는 것으로 간단한 데이터 저장방식입니다. Preference는 xml형태로 키-값 형태로 생성 됩니다.

일반적으로 이 xml의 위치는 data/data/[패키지 이름]/shared_prefs에 xml로 저장 됩니다. 일반적으로는 해당 xml에 접근하거나 열어 볼수 없지만 단말기의 수퍼유저 권한을 얻거나 루팅을 하는 경우에는 해당 xml에 접근이 가능하므로 Preference를 사용하는 데이터는 민간한 개인정보(아이디,패스워드등)등은 저장하여서는 않됩니다.

노출되어도 무방한 일반 데이터만 Preference로 사용하는 것이 보안상 안전 합니다. 앱이 종료되어도 유지되는 비휘발성 저장방법입니다.


.사용 예제

Preference는 데이터를 저장하는 것과 저장된 데이터를 불러오는 코드로 사용 됩니다.


Preference 데이터 저장


1
2
3
4
SharedPreferences pref = getSharedPreferences("Preference 이름", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putInt("test_number",0);
editor.commit();
cs


데이터 저장을 하는 코드중 중요한 몇개항목을 살펴보면 


SharedPreferences pref = getSharedPreferences("Preference 이름", Activity.MODE_PRIVATE);

Preference를 사용 하기 위한 선언입니다.

"Preference 이름"은 Preference를 이용 할때 사용되는 이름입니다. DB로 치면 table명입니다. 해당 이름으로 저장 하였으면, 데이터를 가지고 올때도 이 이름을 가지고 와야 합니다. Activity.MODE_PRIVATE은Preference의 옵션값입니다. 이 옵션은 3가지 있으며, 각각의 옵션이 의미하는 것은 아래와 같습니다. 일반적으로Activity.MODE_PRIVATE를 사용 합니다.


- Activity.MODE_PRIVATE : 읽기,쓰기 가능

- Activity.MODE_WORLD_READABLE : 읽기,공유

- Activity.MODE_WORLD_WRITEABLE : 쓰기,공유 


editor.putInt("test_number",0);

실제 값을 저장하는 코드 입니다. 키-값으로 저장 하게 되며, 차후 데이터를 가져올때 저장한 키값으로 가져와야 합니다.


Preference 데이터 가져오기


1
2
SharedPreferences pref = getSharedPreferences("Preference 이름", Activity.MODE_PRIVATE);
int num = pref.getString("test_number"0);
cs


데이터를 가져오는 코드는 간단합니다. 데이터를 저장 할때 사용한 이름과 키로 가지고 와야 합니다. 주의 해야 할점은 데이터 저장을 한 타입으로 데이터를 가지고 와야 한다는 것입니다.


Preference 데이터 초기화


Preference를 사용 하다가 모든 Preference를 초기화 해야 하는 경우가 있습니다. 저장된 모든 Preference를 일일히 Editor로 값을 초기화 할수도 있지만 이럴경우 너무 불편한 방법입니다. 간단히 모든 Preference를 초기화하는 코드는 아래와 같습니다.


1
2
3
4
5
SharedPreferences pref = getSharedPreferences("Preference 이름", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.clear();
editor.commit();
 
cs


댓글