본문 바로가기

Android

[안드로이드]SharedPreferences란?

SharedPreferences란?

- 간단한 값 저장에 DB를 사용하기에는 복잡하기 때문에 SharedPreferences를 사용하면 적합하다.

- 보통 초기 설정값이나 자동로그인 여부 등 간단한 값을 저장하기 위해 사용한다.

- 어플리케이션에 파일 형태로 데이터를 저장한다.

=> data/data/패키지명/shared_prefs/SharedPreference이름.xml 위치에 저장

- 어플리케이션이 삭제되기 전까지 보존된다.


사용법


import android.content.SharedPreferences;


1. SharedPreferences인스턴스 얻기


getPreferences(int mode)

하나의 액티비티에서만 사용하는 SharedPreferences를 생성한다.

생성되는 SharedPreferences 파일은 해당 액티비티이름으로 생선된다.

하나의 액티비티에서만 사용할 수 있지만 getSharedPreferences()를 사용하면 다른 액티비티에서도 사용가능하다.


getSharedPreferences(String name, int mode)

특정 이름을 가진 SharedPreferences를 생성한다.

주로 애플리케이션 전체에서 사용한다.


2. SharedPreferences에 데이터 저장하기


먼저 데이터를 기록하기 위해 SharedPreferences.Editor 인스턴스를 얻어야 한다.

SharedPreferences test = getSharedPreferences("test", MODE_PRIVATE);

SharedPreferences.Editor editor = test.edit();

editor.putString("First", infoFirst); //First라는 key값으로 infoFirst 데이터를 저장한다.

editor.putString("Second", infoSecond); //Second라는 key값으로 infoSecond 데이터를 저장한다.

editor.commit(); //완료한다.

*저장할 수 있는 데이터타입

- Boolean

- Integer

- Float

- Long

- String


3. SharedPreferences에 데이터 불러오기


데이터를 불러오기 위해서 getInt()나 getString() 메서드를 사용하여 불러와야 한다.

getInt(KEY, VALUE)

첫번째 인자는 데이터의 키, 두번째 인자는 해당값이 없을경우 반환할 값을 넣어준다.

SharedPreferences test = getSharedPreferences("test", MODE_PRIVATE);

int firstData = test.getInt("First", 0);


4. SharedPreferences에 데이터 삭제하기


1. 특정 데이터 삭제

SharedPreferences test = getSharedPreferences("test", MODE_PRIVATE);

SharedPreferences.Editor editor = test.edit();

editor.remove("test");

editor.commit();


2. 모든 데이터 삭제

SharedPreferences test = getSharedPreferences("test", MODE_PRIVATE);

SharedPreferences.Editor editor = test.edit();

editor.clear();

editor.commit();



추가 - 객체 저장하기

gson 사용법

//Creating a shared preference
SharedPreferences  mPrefs = getPreferences(MODE_PRIVATE);

To Save

     Editor prefsEditor = mPrefs.edit();
     Gson gson = new Gson();
     String json = gson.toJson(MyObject);
     prefsEditor.putString("MyObject", json);
     prefsEditor.commit();

To Retreive

    Gson gson = new Gson();
    String json = mPrefs.getString("MyObject", "");
    MyObject obj = gson.fromJson(json, MyObject.class);