안녕하세요. 하다블입니다.
오늘 기록할 부분은 "데이터 유지하기"입니다.
기초부터 프로그래밍하다 보면 잘 작동하는 듯 보이는 나의 어플에도 문제점이 보이게 되는데, 가장 큰 문제점이라고 생각하는 부분은 바로 데이터를 유지하는 못한다는 점입니다.
멀티 윈도로 화면을 띄우거나 팝업으로 화면을 띄우거나 심지어 화면을 가로로 전환하기만 해도 데이터가 유지되지 않는 문제가 발생하게 됩니다.
이러한 부분을 해결할 수 있는 방법은 여러 가지가 있으나 가장 간단한 방법은 onSaveInstanceState()를 사용하여 UI 상태를 저장하는 방법입니다.
대부분 코틀린을 시작하고 배우는 입장에서는 onCreate함수에서 진행될 겁니다. 앱의 LifeCycle에 따라 쓰는 함수가 여러가지가 있지만 이번에는 onCreate함수만 사용했다는 가정 하에 진행하였습니다.
onSaveInstanceState는 간단한 몇 가지의 변수들을 저장할 수 있습니다. 사용 방법은 다음과 같습니다.
//변수에 해당하는 check, textName은 이미 선언한 변수
override fun onSaveInstanceState(outState: Bundle) {
outState.putBoolean("check",check)//Boolean타입을 저장
outState.putString("textName",textName)//String타입을 저장
super.onSaveInstanceState(outState)
}
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
realOrFake=savedInstanceState.getBoolean("check")//Key=check에 저장된 값 가져오기
miniText=savedInstanceState.getString("textName")//key=textName에 저장된 값 가져오기
super.onRestoreInstanceState(savedInstanceState)
}
다음과 같이 onSaveInstanceState에서는 putString, putInt등과 같은 변수를 저장하는 함수를 사용하여 변수와 이를 불러낼 key를 같이 적어주고 다시 사용할 때에는 onRestoreInstanceState에서 getString, getInt 등을 사용하여 가져와 사용할 수 있습니다.
이러한 방법으로 화면이 회전하거나 팝업화면, 멀티윈도화면으로 나갔을 때 UI가 유지되지 못하거나 값을 유지하지 못하는 경우를 방지할 수 있습니다.
이 내용을 먼저 기록하긴 했으나 이 내용을 확실하게 이해하기 위해서는 LifeCycle에 대해서 더욱 자세히 알고 있어야 한다고 생각하기 때문에 다음에는 LifeCycle에 대하여 기록하도록 하겠습니다.
더 열심히 하는 사람이 되겠습니다.
감사합니다.
'Kotlin_Android 앱 개발 > 코틀린 익히기' 카테고리의 다른 글
08. 계산기 만들기(부제: constraintlayout Flow 활용하기) (0) | 2024.02.21 |
---|---|
07. 생명 주기 (Life Cycle) (0) | 2024.01.31 |
05. 숫자 카운트 어플 만들기(1) (0) | 2024.01.25 |
04. startActivityForResult를 대체하기 위한 registerForActivityResult (1) | 2024.01.13 |
03. 익명 함수, 람다식 (1) | 2024.01.08 |