[Android] ViewModel clear(초기화) 및 데이터가있는 livedata duplicate observe
2022. 2. 23. 14:56ㆍ모바일/Android_Java
[Android] ViewModel clear(초기화) 및 데이터가있는 livedata duplicate observe
문제점
블루스 (키보드, 마우스 등)연결시 해당 화면의 onstop ~ onDestroy 안드로이드 생명주기에 따라 실행된다.
이때 ViewModel의 생명주기에 따라 ViewModel은 clear되지 않고 살아있게된다,
oncreate에서 viewmodel을 설정하면서
new ViewModelProvider(this, new viewModelProvider.NewInstanceFactory()).get(viewmodel.class)
viewmodel store에 존재했던 viewmodel을 가져오게 되는데 기존 livedata에 set했던 데이터들이 남아있게 된다.
그 데이터를 observe하면 데이터가 있는 livedata에 observe하는것이므로 처음 observe 할때 바로 emit을 받아서 onChanged함수가 실행되고 observe콜백을 받게 된다.
따라서, 방법은2가지 일 것같다.
- eventemitter android 를 만들어 데이터 emit시에 초기화한다.
- viewmodel을 설정하기 전에 viewmodelstore를 클리어한다
getViewModelStore().clear();
'모바일 > Android_Java' 카테고리의 다른 글
[Android] Constraint Left vs Start , Right vs End (0) | 2022.03.11 |
---|---|
[Android] 생명주기 복습 (0) | 2022.03.07 |
[Android] 특수문자 제거 (0) | 2022.02.16 |
[Android] TabLayoutMediator (tabselectedListener not call + viewPager not changed) (0) | 2022.01.07 |
[Android] CheckBox CompoundButton.OnCheckChangeListener not working first call (0) | 2021.12.23 |