[안드로이드] LiveData - 1

Chloe Choi·2020년 12월 28일
0

안드로이드

목록 보기
1/17

한번 정리하고 넘어가는게 좋을거같아서 ~_~

Why

MVP 패턴을 사용할 때, API를 호출하고 그 결과를 가져오는 상황을 생각해봅시다.

이 경우, 다음 문제를 갖게 됩니다.

  • View-Presenter 간 높은 결합도
  • View-Presneter 간 많은 Interface

MVVM 패턴은 이 해결책으로 제시되었죠. 진짜 대충 View와 ViewModel 간의 interaction을 확인해볼게요

notify 시 발생하는 이슈는 뭐가 있을까요?

  • View의 생명주기가 끝났다면? -> 비정상적 종료
  • 미처 확인하지 못한 state 변경상황은 없을까? -> 데이터 최신화 실패

이를 LiveData로 어떻게 해결하였는지 살펴보겠습니다 🤓

How

LiveData가 어떻게 동작하길래 위 문제를 해결할 수 있을까요?

Observer Pattern

배경지식이 되는 옵저버 패턴에 대해 간단히 이야기하겠습니다.

  • Subject: Observer list를 가지고 있으며 state가 바뀌면 각 Observer에 그 변화를 notify합니다 a.k.a. Observable
  • Observer: notify를 받기 위해 attach()를 통해 Subject을 구독합니다
    즉, Subject는 Observer에 notify를, Observer는 Subject를 observe하는 관계가 되겠죠!

View observes LiveData

LiveData가 Lifecycle을 아는 Observable data class가 되어 View list를 가지고 있자!

  • LiveData as a Subject(Observable)
  • View as an Observer
  • Lifecycle-aware: View의 생명주기가 활성상태일때만 View(Observer)에 notify
  • Obsevable: 최신데이터를 유지할 수 있음

View와 ViewModel 사이의 communication을 LiveData로 해결할 수 있게되었습니다 😀

참고

https://en.wikipedia.org/wiki/Observer_pattern
https://medium.com/better-programming/everything-to-should-understand-about-livedata-507dd83adea7

What 부분이랑 실습은 다른 글에 이어서 쓰도록 하겠습니다!

profile
똑딱똑딱

0개의 댓글