안드로이드 세계

[Android] SharedPreferences란? 본문

안드로이드(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

 

Comments