-
[Android Studio] 간단한 정보 저장 - SharedPreferences 를 파헤쳐보자개발 끄적끄적/Android 2020. 7. 1. 14:18반응형
앱을 개발하면서 데이터를 저장해야 할 일은 무궁무진하게 많습니다. 데이터를 저장하는 방법에는 여러 가지가 있는데, 그 중 하나인 SharedPreferences에 대해 알아보겠습니다.
SharedPreferences란?
SharedPreferences는 간단한 값을 저장할 때 사용합니다. 어플리케이션의 설정 값, 로그인 여부 등 간단한 값을 위해 DB를 사용하기엔 번거로운데, 이때 사용하기 좋습니다.
SharedPreferences는 파일 형태로 저장됩니다. Key, Value 형태로 저장하며 data/data/{패키지명}/shared_prefs 위치에 저장됩니다.
SharedPreferences는 해당 어플리케이션이 삭제되기 전까지 보존됩니다.
사용 방법을 알아보겠습니다.
val pref = this.getPreferences("prefs", 0) val editor = pref.edit() //값을 저장하기 위해선 apply()를 해주어야 함 editor.putString("my_key", "my_value").apply() //"my_key"를 찾지 못할 경우엔 default 값으로 "" 지정 val mString = pref.getString("my_key", "")
키(Key), 값(Value)의 순으로 적용한 예시입니다. mString에는 "my_value"라는 값이 저장됩니다.
value로 넣는 값의 타입에 따라 사용되는 메소드가 달라집니다. 위 예제에서는 String 값이기 때문에 putString(), getString() 메소드가 사용되었습니다.
ex) "key_a" 에 1이란 값을, "key_b"에 true을 저장, 호출한다면 다음과 같이 나타낼 수 있습니다.
val pref = this.getPreferences("prefs", 0) val editor = pref.edit() //값을 저장하기 위해선 apply()를 해주어야 함 editor.putInt("key_a", 1).apply() editor.putBoolean("key_b", true).apply() //"key_a", "key_b"를 찾지 못할 경우엔 default 값으로 0, false 지정 val mInt = pref.getInt("key_a", 0) val mBoolean = pref.getBoolean("key_b", false)
사실 SharedPreferences는 앱 전역에서 사용되는 경우가 많기 때문에 싱글톤 패턴으로 만들어 앱 어디서든 접근할 수 있도록 해주는 것이 좋습니다.
클래스화 해줄 때는 다른 액티비티보다 먼저 생성되어야 정보를 넘겨줄 수 있습니다. 따라서 SharedPreferences 클래스를 생성해준 뒤 onCreate보다 먼저 선언해주어야 합니다.
MySharedPreferences.kt
class MySharedPreferences : Application() { companion object { lateinit var pref: PreferenceUtil } override fun onCreate() { pref = PreferenceUtil(applicationContext) super.onCreate() } }
PreferencesUtil.kt
class PreferencesUtil(context:Context) { private val pref = context.getSharedPreferences("prefs", 0) //value는 default 값 fun getString(key:String, value:String) : String{ return pref.getString(key,value).toString() } fun setString(key:String, value:String){ pref.edit().putString(key,value).apply() } //default value fun getBoolean(key:String, value:Boolean):Boolean{ return pref.getBoolean(key, value) } fun setBoolean(key:String, value:Boolean){ pref.edit().putBoolean(key,value).apply() } }
위 코드를 작성했다면 Manifest에 등록해주어야 합니다.
AndroidManifest.kt
<application android:name=".MySharedPreferences" ... </application>
이제 어플리케이션 전역에서 아래 코드를 사용해 데이터를 저장, 접근할 수 있습니다.
MySharedPreferences.pref.getString("key_a", "nothing") MySharedPreferences.pref.setString("key_a", "value_a") MySharedPreferences.pref.setBoolean("flag_a", true) MySharedPreferences.pref.getBoolean("flag_a", false)
반응형'개발 끄적끄적 > Android' 카테고리의 다른 글
[Android Studio] 안드로이드 개발 환경 구축하기 - Android Studio 사용방법 및 구조 이해하기 (0) 2020.09.22 [Android Studio] 안드로이드 개발 환경 구축하기 - Android Studio 설치 (0) 2020.09.18 [Android Studio] Intent - 전화걸기, 메시지, 웹사이트, 맵 (0) 2020.06.29 [Android Studio] MaterialCalendarView 커스텀해서 사용하기 (1) 2020.06.26 [Android Studio] Animation을 이용해 커스텀 로딩 창(Custom Dialog) 만들기 (0) 2020.06.25