[TIL] #37 SharedPreferences

Yeon·2023년 9월 12일
0

내일배움캠프 - Kotlin

목록 보기
50/58
post-thumbnail

1. SharedPreferences?

  • 안드로이드 앱에서 간단한 키-값 쌍 형태로 데이터를 저장하고 관리할 수 있는 메커니즘
  • 이 데이터는 앱을 종료하고 다시 실행할 때에도 유지됨
  • 주로 설정, 세션 정보, 앱 상태 등을 저장하기 위해 사용됨

2. How to use SharedPreferences

1) SharedPreferences 객체 생성

getSharedPreferences() 메서드를 사용

val prefs = context.getSharedPreferences("my_preferences", Context.MODE_PRIVATE)
  • my_preferences: SharedPreferences 파일의 이름
    • 여러 앱에서 공유할 필요가 없다면 이 이름은 고유해야 함
  • Context.MODE_PRIVATE: SharedPreferences 파일의 모드
    • 파일의 모드에는 4가지가 있지만 현재 Android에서는 주로 Context.MODE_PRIVATE를 사용하여 SharedPreferences 파일을 생성하고 앱 내에서만 접근 가능하도록 함!
    • 다른 모드들은 보안 및 데이터 문제로 인해 권장되지 않으며, 사용을 피하는 것이 좋음!

2) 데이터 저장

SharedPreferences에 데이터를 저장하기 위해서는 SharedPreferences.Editor 객체를 얻어야 함

val editor = prefs.edit()
editor.putString("username", "ars_yeon")
editor.putInt("age", 25)
editor.apply()

3) 데이터 불러오기

val username = prefs.getString("username", "")
val age = prefs.getInt("age", 0)
  • 첫 번째 매개변수: 키
  • 두 번째 매개변수: 해당 키로 저장된 값이 없을 때의 기본값

3. Example

1) MainActivity.kt

class MainActivity : AppCompatActivity() {
    private lateinit var prefsUtil: PrefsUtil

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        prefsUtil = PrefsUtil(this)

        // 데이터 저장
        prefsUtil.saveUsername("ars_yeon")
        prefsUtil.saveAge(25)

        // 데이터 불러오기
        val username = prefsUtil.getUsername()
        val age = prefsUtil.getAge()

        // 불러온 데이터 사용
        println("사용자 이름: $username")
        println("나이: $age 세")
    }
}

2) PrefsUtil.kt

class PrefsUtil(context: Context) {
    private val prefs = context.getSharedPreferences("pref", Context.MODE_PRIVATE)

    fun getUsername(defaultValue: String = ""): String {
        return prefs.getString("username", defaultValue) ?: defaultValue
    }

    fun getAge(defaultValue: Int = 0): Int {
        return prefs.getInt("age", defaultValue)
    }
    
    fun saveUsername(username: String) {
        prefs.edit().putString("username", username).apply()
    }

    fun saveAge(age: Int) {
        prefs.edit().putInt("age", age).apply()
    }
}



[참고 사이트]

'SharedPreferences로 단순 데이터 저장하기', Developer
'Kotlin 코틀린의 SharedPreferences', 용이의 개발블로그

0개의 댓글