[Kotlin] getSharedPreferences는 뭘까?

Jeanine·2022년 5월 5일
0

android

목록 보기
4/10
post-thumbnail
post-custom-banner
  • Android Jetpack의 구성요소

Android Jetpack이란?
개발자가 관심 있는 코드에 집중할 수 있도록 권장사항 준수, 상용구 코드 축소, 모든 Android 버전 및 기기에서 일관되게 작동하는 코드 작성을 돕는 라이브러리 모음

  • 애플리케이션 세션에 걸쳐 저장된 파일에서 간단한 키-값 쌍을 읽고 쓸 수 있도록 해줌
  • 앱을 나갔다가 다시 들어와도 데이터가 보존되어 있음
  • 다른 앱이 액세스할 수 없는 비공개 데이터
  • 앱을 제거할 때 파일이 삭제됨
  • 저장하려는 키-값 컬렉션이 비교적 작은 경우에 사용
  • 데이터 쓰기 : 키는 putString(), 값은 putInt()
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
    putInt(getString(R.string.saved_high_score_key), newHighScore)
    apply()
}
apply() 대신 commit()을 쓰고 싶다면 edit의 인자로 true를 넣어주면 된다.
passwordPreferences.edit(true) {
   putString("password", passwordFromUser)
}

apply()commit()의 차이는?

  • apply()는 변화된 부분만 SharedPreferences에 저장하고 디스크에는 비동기적으로 커밋함 (그래서 실패가 발생해도 모를 수 있음)
  • commit()은 디스크에 동기적으로 데이터를 저장함
    ⚠️ 기본 스레드라면 commit() 대신 apply()를 쓸 것 (∵ UI 렌더링이 중지될 수 있음)
  • 데이터 읽기 : 키는 getString(), 값은 getInt()
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
val defaultValue = resources.getInteger(R.integer.saved_high_score_default_key)
val highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue)

[공식 문서 참고]
1. 데이터 및 파일 저장소 개요
2. 키-값 데이터 저장
3. 저장된 값 사용
4. SharedPreferences.Editor

profile
Grow up everyday
post-custom-banner

0개의 댓글