[안드로이드] ViewModel을 이용한 UI 상태저장

Chloe Choi·2021년 5월 11일
0

안드로이드

목록 보기
14/17

ViewModel UI 상태저장

뷰모델은 액티비티보다 긴 생명주기를 가진다. 따라서 이를 이용해 Configuration 변경 시(onDestroy() -> onCreate()) UI 상태값을 저장하고 다시 화면에 보여줄 수 있다.

위 그림에서 확인할 수 있듯, 액티비티의 onDestroy() 이후에 onCleared()가 호출된다.

🧐 onCreate()에서 새로운 뷰모델을 생성하지 않나요?
👉 ViewModelProviders.of를 이용해 뷰모델 인스턴스를 가져오는데, 만약 미리 생성된 인스턴스가 있다면 그걸 가져온다.

✅ 메모리 관련 이슈로 kill된 경우엔 뷰모델도 같이 kill되어 데이터를 유지할 수 없다
✅ EditText 값 같은 동적데이터는 자동으로 저장된다

onSaveInstanceState()와 비교

onSaveInstanceState() 사용 시(Bundle 전달)

  • 직렬화/역직렬화 방식 -> 많은 시간 필요
  • primitive 값만 저장가능
  • 시스템에서 kill 되어도 유지

ViewModel 사용 시

  • 메모리에 바로 저장해 읽기/쓰기가 빠름
  • 복잡한 객체도 OK
  • 시스템에서 kill 되면 같이 사라짐

ref.

https://medium.com/androiddevelopers/viewmodels-a-simple-example-ed5ac416317e

profile
똑딱똑딱

0개의 댓글