오늘 포스트는 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")
이상입니다.
'개발노트 > Android' 카테고리의 다른 글
[Android Studio] 레이아웃 성능과 그 종류와 특징들에 대해 (0) | 2023.02.17 |
---|---|
[Kotlin] Custom Dialog 사용하기 (0) | 2023.02.17 |
Cause: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded (0) | 2022.12.13 |
android: ImageView 크기 percentage로 주기 (0) | 2022.11.07 |
android : emulator host파일 변경하기 [MAC] (0) | 2022.11.03 |
댓글