GDSC HUFS 3기/Android with Kotlin Team 2

[2팀] 16-2 SharedPreference로 상태 값 지정하기

제주도감귤쥬스 2021. 11. 22. 22:09

이 글은 이것이 안드로이드다 with 코틀린(개정판)를 참고하여 작성하였습니다.

작성자 : 강소영

개발환경은 Windows, Android Studio입니다. 

 

1. SharedPreference

 

데이터 베이스(DB)에 저장을 하기에는 애매한 적은 양의 데이터 or 설정값을 저장할 때 많이 이용하는 것.

->안드로이드 스튜디오에서 앱의 데이터를 저장하는 방식 중 하나.

 

Key/Value 형태로 데이터를 저장할 수 있는 데이터 구조로 내부적으로는 XML 파일로 저장됨.

 

-사용법

getShardPreferences를 이용해 호출하고 이름과 모드를 지정해준다.

2의 예시에서 자세한 설명을 하도록 하겠다.

 

2. SharedPreference를 이용해 사용자가 앱을 처음 접속했을 때 글자를 보여주고 두 번째 접속부터는 안보이도록 하는 프로그램 짜보기

1) SharedPreferences 변수 생성

val shared = getSharedPreferences( name: "파일명", Context.MODE_PRIVATE) 
//처음 앱이 열렸을 때 "파일명"에 있는 값을 가져와야 한다.

 

2) defValue 지정하기

val first_open = shared.getBoolean(key: "key_first_open", defValue: false)
//앱을 처음 깔았을 때는 "파일명"에 해당하는 sharedpreference나 key값이 존재하지 않을 것이므로, getBoolean으로 "파일명"에 있는 key_first_open에 값이 존재하지 않으면 false라고 지정해준다.

 

3) 조건문 작성

if(first_open) { //이것이 True이면 화면에 글자가 안보이도록 만든다. (한 번 앱을 열었을 시 그 값이 저장된다면 화면에 글자가 나타나지 않도록 하는 것)
    binding.hello.visability = view.GONE //hello는 예시이다.
}

val editor = shared.edit () //수정을 위한 에디터 꺼내기

editor.putBoolean("key_first_open", true) //앱을 한 번 실행했으므로 true. 이 값이 저장되면 다음 실행부터는 화면에 글자가 보이지 않는다.

editor.comit()

 

3. 값이 어디에 저장되는지 확인해보기

Device File Explorerㅡdataㅡdataㅡ패키지명(사용자마다 다름/com.package.sharedpreference 형태)ㅡshared_prefs(이것이 보이지 않으면 패키지를 우클릭 해서 Synchronize를 클릭하면 됨.)ㅡ파일명.xml

 

파일명.xml을 더블클릭 해보면 "key_first_open"의 value가 "true"라고 되어있는것을 확인할 수 있다.

 

 

꼭 저장값을 Boolean 형태로 하지 않아도 된다. "처음". "두번째"와 같이 String 형식으로 해도 된다.

 

 

*주의할 점*

처음에 Boolean 형태로 저장값을 지정한 뒤 한 번 실행하고 나서 저장값을 String형태로 변경하고싶다면 Emulator에서 앱을 재설치해야 오류가 나지 않는다. 처음 저장된 값은 Boolean인데 타입을 변경하면 같은 key값의 타입이 맞지 않아 오류가 난다.

 

"key_first_open"과 같은 중요한 값은 오타로 인한 에러 방지를 위해

companion objcect {
 const val KEY_FIRST_OPEN = "key_first_open"
}

이렇게 해 주는 것이 좋다.