안드로이드(Android)/이론
[Android] SharedPreferences란?
리안94
2021. 1. 8. 16:56
1. SharedPreference
- 로컬에 데이터를 저장하기 위해서 사용하는데, 대용량은 Room, SQLite(로컬 디비)를 이용하고, 간단한 것(Key-value형태)들은 SharedPreference로 저장을 할 수 있다.
- 주로 간단한 설정(자동 로그인, 테마 설정, 최초 실행 여부 등)을 이용할 때 사용하면 좋다.
2. 사용법
- 먼저 사용할 파일의 이름을 지정하고, 모드(프라이빗, 퍼블릭)를 선택하여야 한다.
- 공유 파일이 여러 개일 경우는 getSharedPreferences, 하나인 경우는 getPreferences를 사용하면 된다.
val sharedPref = activity?.getSharedPreferences(
"파일명", Context.MODE_PRIVATE)
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)
- 해당 파일에 쓰기를 할 때에는 아래와 같이 사용한다.
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
putInt("hightScore", newHighScore)
commit()
}
- 해당 파일을 읽을 때에는 아래와 같이 사용한다.
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
val defaultValue = resources.getInteger(R.integer.saved_high_score_default_key)
val highScore = sharedPref.getInt("highScore", defaultValue)
실제로 내가 사용할 때에는 다음과 같이 사용한다.
object SharedPreference {
private var shared : SharedPreferences? = null
fun init(context: Context){
shared = context.getSharedPreferences("Setting", Context.MODE_PRIVATE)
}
var autoLogin: Boolean
get() = shared?.getBoolean("AutoLogin", false) as Boolean
set(value) = shared?.edit()?.putBoolean("AutoLogin", value)?.apply()!!
}
액티비티나 프래그먼트에서 사용할 때에는 아래와 같이 사용한다.
SharedPreference.init(this)
SharedPreference.autoLogin = true
액티비티라면 onCreate, 프래그먼트라면 onViewCreated에 넣어주면 사용이 가능하다.
더 자세히 알고 싶다면 아래 링크를 참고하는 게 좋을 것 같다.
developer.android.com/training/data-storage/shared-preferences?hl=ko
키-값 데이터 저장 | Android 개발자 | Android Developers
저장하려는 키-값 컬렉션이 비교적 작은 경우 SharedPreferences API를 사용해야 합니다. SharedPreferences 객체는 키-값 쌍이 포함된 파일을 가리키며 키-값 쌍을 읽고 쓸 수 있는 간단한 메서드를 제공합
developer.android.com