반응형
[MVVM 정복] 4. 어렵고 이해도 잘 안되는 DI, 그리고 Koin
Android, iOS 2020. 5. 18. 17:50

이번편에서도 코드를 보면서 학습하길 권한다. conquerex/mvvm-template MVVM 학습과 앞으로 활용을 위한 템플릿. Contribute to conquerex/mvvm-template development by creating an account on GitHub. github.com DI(Dependency injection)가 "의존성 주입"이라는 의미인 것은 많은 분들이 알고 있다. 그런데 의존성 주입이 무엇이냐고 물어보면 제대로 답할 수 있는 사람이 얼마나 될까? 그래서 알아보았다. DI, 넌 누구냐. 일단 의존성이 무엇인지 알아보자. 두 모듈의 연결, 두 클래스의 관계 의존성이 크다 == 결합도가 높다 '의존성이 큰게 왜??'라는 생각이 들 수 있다. 의존성이 크게 되면 독립성은..

[MVVM 정복] 3. Model과 리액티브 프로그래밍(Rx)
Android, iOS 2020. 5. 18. 17:47

이번편에서도 코드를 보면서 학습하길 권한다. (나도 학습하면서 포스팅 중) Model Model은 View에 표시할 데이터를 의미한다. DataModel이라고도 하며 DB, Network, SharedPreference 등 다양한 데이터 소스로부터 필요한 데이터를 준비한다. ViewModel에서 데이터를 가져갈 수 있게 데이터를 준비하고 그에 대한 "이벤트"를 보낸다. DataModel, DataModelImpl DataModel를 interface로 만들어서 구현부(DataModelImpl)를 분리시켰다. ViewModel이 데이터를 가지고 갈 수 있도록 준비되어 있다. 데이터를 가지고 올 소스를 API로 받아야하기에 KakaoSearchService를 구현했다. API의 파라미터 중 정해진 값만 전달..

[MVVM 정복] 2. SnackbarMessage, BaseViewModel, BaseActivity
Android, iOS 2020. 5. 18. 17:46

코드는 내 깃헙을 참고하면 된다. 커밋 로그와 블로그 포스팅 제목이 유사하게 따라간다. SnackbarMessage SnackbarMessage는 SingleLiveEvent이다. 앞 포스팅에 있는 그 SingleLiveEvent이다. Snackbar에 보여주고 싶은 메세지가 있다면 이 이벤트의 value에 원하는 메시지를 담으면 된다. class SnackbarMessage : SingleLiveEvent() { fun observe(owner: LifecycleOwner, observer: (Int) -> Unit) { super.observe(owner, Observer { it?.run { observer(it) } }) } } 위의 super.observe는 SingleLiveEvent에 있는 ..

[MVVM 정복] 1. LiveData와 SingleLiveEvent
Android, iOS 2020. 5. 18. 17:44

MVVM에서 데이터가 변경되는 시점에 UI가 변경되도록 하기 위해서 LiveData를 사용한다. 그런데 LiveData의 특성상 시도때도 없이 이벤트를 발생시킬 수 있기 때문에 SingleLiveEvent라는 것을 보통 만들어 쓴다. 여기서는 이 SingleLiveEvent의 용도를 확인해보자. LiveData. Data의 변경을 관측할 수 있는 (데이터가 변경되었을 때 감지가 됨) Data Holder 클래스. (데이터를 가지고 있음) 변경을 감지할 수 있는 이유는 컴포넌트의 생명주기를 LiveData가 알고 있기 때문이다. LiveData는 Observer 패턴을 가지기 때문에 데이터의 변경이 있을 시 콜백으로 받아서 처리할 수 있다. 옵저버 등록과 관련하여 다른 블로그에서 설명한 글을 가지고 와 보..

[MVVM 정복] 0. 어떤 순서로 개발할 것인가
Android, iOS 2020. 5. 18. 17:43

MVVM을 공부하려면 알아야하는 것이 한두개가 아니다. LiveData, ViewModel, Rx 등등 무엇부터 손을 대야할지 감도 잡히지 않는다. 나 역시 그렇다. 중심이 되는 자료가 필요할테고 거기서 시작하기로 했다. https://github.com/hongbeomi/HarryPotter https://github.com/5seunghoon/Kotlin-MVVM-Sample 포스팅 순서 1. LiveData와 SingleLiveEvent 2. SnackbarMessage, BaseViewModel, BaseActivity 3. Model과 리액티브 프로그래밍(Rx) 4. 어렵고 이해도 잘 안되는 DI, 그리고 Koin 5. View에 Koin으로 의존성 주입하기 6. RecyclerView 적용해보..

728x90
반응형