inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

모던 안드로이드 - 코틀린과 Jetpack 활용

SavedStateHandle을 사용하여 더 안전하게 UI 상태 유지하기

SavedStateHandle 앱 종료 시킨 후, 다시 열면 0으로 초기화 되어있습니다ㅠ

475

완두콩

작성한 질문수 2

0

안녕하세요!

SavedStateHandle  관련 영상을 보고 실습을 진행해 보았는데, 앱 종료후 변화된 count가 보이지 않고,

0값으로 바뀌어 앱이 실행됩니다..

어떻게 하면, 앱 종료전 count 값을 불러올 수 있을까요?

아래는 제 코드입니다ㅠ

class MainViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel() {
private var savedCount = savedStateHandle.get<Int>("count") ?: 0
set(value) {
savedStateHandle.set("count", value)
field = value
_count.value = savedCount
}
private val _count = MutableLiveData<Int>(savedCount)
val count : LiveData<Int> get() = _count

fun plusCount(){
savedCount++
Log.e("asd",count.value.toString())
}

fun minusCount(){
savedCount--
Log.e("asd",count.value.toString())
}
}

android kotlin jetpack

답변 1

0

오준석

일반적으로 화면 회전에 대해서는 ViewModel을 사용해서 상태 저장이 가능합니다.

그런데 시스템에 의해 앱이 강제 종료될 때 (유휴상태로 오랜 시간이 지난 경우 등)는 ViewModel 또한 파괴되어 상태 보존이 어렵습니다.

일반적으로 시스템에 의한 kill에 대처하려면 Activity나 Fragment에서 onSavedInstanceState 에서 상태 저장 후 onRestoreInstanceState에서 복원 처리를 하게 되는데


ViewModel에서 이를 처리할 수 있도록 SavedStateHandle이 제공됩니다.

시스템에 의한 kill이 되었을 때의 처리를 하는 코드이기 때문에

사용자가 종료를 했을 때는 정상 종료이므로 앱 종료후에 값이 초기화된 것은 정상 동작입니다.

https://developer.android.com/topic/libraries/architecture/viewmodel-savedstate

Room_DB코틀린 버전에서 에러 나시는 분들

1

294

1

Room db kotlin 관련질문

0

282

2

Room db kotlin 강의중에서

0

420

3

공적 마스크 조회 앱 자바 버전 질문입니다.

0

388

1

RecyclerView Adapter에서 ViewModel 접근에 관하여 질문 드립니다.

0

1401

1

네비게이션 그래프

0

229

1

Repository에서 Error처리를 하고 싶은데 잘 모르겠습니다.

0

755

1

getAll을 직접부를 때 무한무프 질문있습니다.

0

209

1

라이브 데이터 + 데이터 바인딩 질문드립니다!

0

218

1

/?m=5000 에 대해서 질문드립니다.

0

228

2

@Inject lateinit var repository: MyRepository

0

285

1

이번편 강의의 3:52 부분까지 공부했는데 에러가 걸립니다

0

412

2

let이나 apply는 주로 어떤 상황에 사용하나요?

0

262

2

Call<StroeInfo> 를 StoreInfo로 바꾸는 부분 질문

0

240

1

Room DB 파일을 확인하고 싶어요.

0

2338

1

안녕하세요.

0

442

4

NullPointerException이 뜨는데 이것도 마스크 재고 API 중지 때문인가요

0

287

1

viewModel 질문 있습니다.

0

390

1

suspend

0

241

2

retrofit2에서 코루틴을 이용하는 이유가 무엇인가요?

1

270

2

UpdateItems 생성

0

145

1

질문있습니다.

1

232

3

질문있습니다!

0

267

1

리사이클러뷰 어댑터에서 뷰모델

0

233

1