Velog를 하는 목적처럼 기존에 알더라도 제대로 잡고 가잔 의미에서 또 정리를 하게 된다. 아무 생각없이 쓰던 기술들에 대해 확실한 정리가 뒷받침되어야 해당 기술을 더 잘 활용하지 않을까...🧐
Activity나 Application 설정값이나 UI정보 같은 간단한 정보 값을
XML(Key, Value) 기반의 파일 형태로 저장하고 꺼내 쓸 수 있는 것이다.
getPreference(int mode)
: 하나의 Activity에서만 사용하는 SharedPreference를 생성한다.
: 생성되는 SharedPreference 파일은 해당 액티비티 이름으로 생성된다.
getSharedPreference(String name, int mode)
: 특정 이름을 가진 SharedPreference를 생성한다.
데이터 기록을 위해 SharedPrefereces.Editor 인스턴스를 얻어야 한다.
SharedPreference sb = getSharedPreference("android", MODE_PRIVATE);
SharedPreference.Editor editor = sb.edit();
editor.putString("first", infoFirst); //first라는 키값으로 저장
editor.commit(); //완료
데이터를 저장할 때에 있어서 commit()과 apply()가 있다.
둘의 차이는 꽤나 자주나오는 문제인가보다.
(apply()를 IDE에서는 추천한다.)
public abstract boolean commit () -- API 1
public abstract void apply () -- API 9
commit()
- 데이터가 동기적으로 반영된다.
apply()
- 비동기적으로 반영이 된다.
commit() -> apply()는 10~30배가 빨라진다고 하니..
참고로 SharedPreference에 데이터를 저장할 때, Gson을 이용하여 객체를 저장할 수도 있다.
SharedPreferences mPrefs = getPreferences(MODE_PRIVATE);
Editor prefsEditor = mPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson(MyObject);
prefsEditor.putString("MyObject", json);
prefsEditor.commit();
Gson gson = new Gson();
String json = mPrefs.getString("MyObject", "");
MyObject obj = gson.fromJson(json, MyObject.class);