본문 바로가기
개발노트/Android

[Kotlin] SharedPreferences 사용하기

by 전지적진영시점 2023. 2. 17.
반응형

오늘 포스트는 SharedPreferences 에 대해 작성하겠습니다

iOS의 UserDefaults와 같은 개념입니다.

 

SharedPreferences

안드로이드를 사용하다보면 DB에 데이터를 저장해야할 때가 많습니다.

예를들어, 로그인을 할 때 앱 재실행 시 최근 로그인 한 아이디를 표시하기 위해 아이디 저장 여부가 필요할 때

DB에 저장할 필요가 없이 앱 내부에 저장을 하면 됩니다. 이때 사용하면 좋은 것이 SharedPreferences입니다.

 

SharedPreferences 는 앱 내부에 값을 저장할 수 있는 메서드를 제공합니다

전 최근에 다국어처리를 하면서 선택된 값을 앱 내부에 저장하고 앱을 껐다 켜도

전에 선택했던 값을 꺼내올 수 있어야 했기 때문에 사용했습니다

SharedPreferences에는 큰 값을 저장하거나 많은 값을 저장하면 앱이 느려질 수 있으니 작은 값들을 적게 저장해야합니다!

 

바로 사용방법을 보겠습니다

 

1. 먼저 SharedPreferences 인스턴스를 초기화해줍니다.

private var pref = context.getSharedPreferences(
    "pref",Context.MODE_PRIVATE)

 

위의 MODE_PRIVATE는 SharedPreferences 인스턴스의 접근권한? 같은 개념입니다.

MODE_PRIVATE는 자기 앱에서만 접근 가능하다를 의미합니다.

 

int MODE_APPEND 기존 preferences 신규 preferences 추가
int MODE_MULTI_PROCESS 이미 호출되어 사용 중인지 체크
int MODE_PRIVATE 생성한 application에서만 사용 가능
int MODE_WORLD_READABLE 다른 application에서 읽을  있음
int MODE_WORLD_WRITEABLE 다른 application에서 기록할  있음

 

프리퍼런스 값을 저장할 때는 put 메서드

prefsId.edit().putString("id",id).apply()
prefsPw.edit().putString("pw",pw).apply()

값을 꺼낼 때는 get 메서드를 사용하시면 됩니다.! 

return prefsLocale.getString(key,"")

 

저 같은 경우는 위 소스를 다른 프리퍼런스 클래스에 선언을 해두었고 값을 저장하고 꺼낸 값을 받아야하는 액티비티에는

아래와 같이 코딩하였습니다.

 

먼저 companion objec 안에 현재 액티비티의 인스턴스를 생성하고 

인스턴스의 applicationContext를 반환받을 수 있는 메서드를 생성했습니다.

companion object {
    lateinit var instance: LoginActivity
    fun ApplicationContext() : Context {
        return instance.applicationContext
    }
}
init{
    instance = this
}

SharedPreferences를 사용할 클래스에 위와같이 소스를 셋팅해두면 이제 값을 꺼내고 저장하기만 하면 됩니다.

 

값을 저장할 때는 아래와 같이 쓰면됩니다.

global.PreferenceUtil(ApplicationContext()).setAutoLoginVal(false)

값을 꺼낼 때는 아래와 같이 쓰면 됩니다.

global.PreferenceUtil(ApplicationContext()).getPrefBool("Pref")

이상입니다.

반응형

댓글