SharedPreferences 사용법

2018. 12. 23. 21:42Coding/Android Studio

728x90

SharedPreferences...

자동로그인, 설정, 앱 최초실행여부, 간단하게 Data저장 등의 경우에 사용하기 좋은 기능.

간단하게 아주 마이너한 DB정도라고 생각해도 될꺼 같다.



기본 사용법(많이 쓰는 String값을 저장하는 것을 기준으로 진행...)

해당 기능의 작동 원리는 다음과 같다.

1) SharedPreferences를 생성(또는 불러옴)

2) Editor를 통해 1에서 만든 파일에 접근, 값을 넣거나, 가져오거나, 삭제...

3) commit()으로 반영.


저장

SharedPreferences pref = mContext.getSharedPreferences("파일 이름", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putString("키 값", "저장할 String값");
editor.commit();

기본적으로 입력해야 할 값은 4가지가 있다.

1) 1번째 줄의 "파일 이름" => SharedPreferences가 저장되는 파일의 이름이라고 생각하면된다.

2) 1번째 줄의 Activity.MODE_PRIVATE => 생성된 SharedPreferences 파일의 접근 권한 설정이라 생각하면 된다.

다른 앱에서 접근가능하게도 설정이 되지만, 보통은 해당 앱에서만 접근 가능한 MODE_PRIVATE를 많이 쓴다.

3) 3번째 줄의 "키 값" => 저장하는 값을 나타내는 키 값을 설정한다.

4) 3번째 줄의 "저장할 String값" => .putString() 메소드이므로 저장할 String 값을 입력한다.



불러오기

SharedPreferences pref = mContext.getSharedPreferences("파일 이름", Activity.MODE_PRIVATE);
String s = pref.getString("키 값", "기본값");

입력값 대부분 위와 같고, 

"기본값"은 getString()에서 가져올 값이 없을때 주어질 default값이다.



삭제

SharedPreferences pref = mContext.getSharedPreferences("파일 이름", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.remove("키 값");
editor.commit();

키 값에 해당되는 data를 찾아서 삭제.







SharedPreferencesUtil.class

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;

public class SharedPreferencesUtil {

private SharedPreferences pref;
private Context mContext;
private static final String XML_FILE_NAME = "File Name"; // SharedPreferences xml file name.

public SharedPreferencesUtil(Context mContext) {
this.mContext = mContext;
}


public String getSharedString(String key) {
pref = mContext.getSharedPreferences(XML_FILE_NAME, Activity.MODE_PRIVATE);
String json = pref.getString(key, null);
return json;
}


public void setSharedString(String key, String json) {
pref = mContext.getSharedPreferences(XML_FILE_NAME, Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putString(key, json);
editor.commit();

}

public void delShared(String key) {
pref = mContext.getSharedPreferences(XML_FILE_NAME, Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.remove(key);
editor.commit();
}

}


클래스로 만들어서 활용하면 편하다.

json값을 저장하고, 불러올 일이 많아서 변수명을 json으로 했지만, 그냥 String값 불러오고 저장하는거니 신경쓰지 않아도 된다.


필요한 곳에서 생성시 해당 context를 넘겨주고,

매서드에서 키값 혹은 키값과 String값을 넘겨주면 된다.




728x90