728x90

MVVM

    [Android] MVVM 패턴과 AAC에서의 ViewModel

    안드로이드 오픈 톡방을 보다 보면 주기적으로 올라오는 질문이 몇 가지 있습니다. 그중 하나가 MVVM 패턴에서의 ViewModel과 AAC(Android Architecture Components)에서 제공하는 ViewModel이 다른 것인가에 대한 질문입니다. 앱 개발 시에 MVVM 패턴을 많이 사용하고, AAC에서 ViewModel을 제공하니 두 ViewModel이 같은 개념일 거라고 생각합니다. 결론부터 말해보자면, 두 ViewModel은 전혀 상관이 없습니다. MVVM 패턴에서 ViewModel의 역할과 AAC에서 제공하는 ViewModel의 역할은 개념적으로 차이가 있습니다. 심지어 안드로이드 공식문서에서 ViewModel을 설명할 때 MVVM 패턴에 대한 언급은 전혀 없습니다. 만약 AAC의 ..

    [Android] Event Wrapper를 사용한 단일 이벤트 처리

    MVVM 패턴에서 ViewModel은 View에 대한 직접적인 참조를 할 수 없습니다. 이때 ViewModel에서 View의 이벤트를 전달해주기 위해선 어떻게 해야 할까요? 간단한 예를 들어보겠습니다. ViewModel에서 데이터를 받아왔는데 에러가 생기고 말았습니다. 에러에 대한 메시지를 사용자에게 토스트로 보여주고 싶습니다. 토스트를 화면에 보여주는 동작은 View의 역할입니다. 그럼 이때 ViewModel에서 View한테 에러가 났다는 이벤트를 전달해주어야 합니다. MVVM 패턴에서는 보통 ViewModel에서 LiveData를 선언한 뒤 View에서 LiveData를 옵저빙 하는 방식으로 많이 사용합니다. 위의 예시를 LiveData를 사용해서 구현해보겠습니다. class SampleViewMod..

728x90