728x90

viewmodel

    [Android] ViewModel에서 실행한 이벤트 기다리기

    ViewModel에서 이벤트를 처리하는 방법에는 여러 가지가 있습니다. (참고 : MVVM의 ViewModel에서 이벤트를 처리하는 방법 6가지) 이벤트에는 토스트 띄우기, 다이얼로그 보여주기 등 여러 가지 종류가 있는데요, 그중에는 사용자의 액션이 포함된 이벤트들도 있습니다. 이번 글에서는 ViewModel에서 실행한 이벤트를 기다리는 방법에 대해 알아보겠습니다. 예를 들어, 아래와 같은 동작을 수행하려고 합니다. 사용자가 로그아웃을 하려고 함. 로그아웃 전에 다이얼로그로 "로그아웃을 하시겠습니까?"를 보여줌. 사용자가 OK 버튼을 누르면 로그아웃 처리 후 토스트로 "로그아웃이 되었습니다."를 보여줌. 여기서의 이벤트는 '다이얼로그를 띄운다.', '토스트를 보여준다.' 2가지인데요, 이 중 다이얼로그를..

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

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

    [Android] Jetpack ViewModel이란?

    ViewModel이란? JetPack의 ViewModel은 액티비티의 수명 주기를 고려하여 UI 관련 데이터를 저장하고 관리하도록 설계되었다. 안드로이드의 액티비티 생명주기와 분리를 시켜, 액티비티가 재실행돼도 데이터가 소멸되지 않도록 한다. 또한 액티비티가 파괴되면 ViewModel의 자원도 자연히 소멸된다. ViewModel 배경 시스템에서 UI 컨트롤러를 제거하거나 다시 만들면 컨트롤러에 저장된 일시적인 모든 UI 관련 데이터가 손실된다. 데이터가 단순한 경우 Activity는 onSaveInstanceState() 메서드를 사용하여 onCreate()의 번들에서 데이터를 복원할 수 있다. 하지만 이 접근 방법은 사용자 목록이나 비트맵과 같은 대용량일 가능성이 높은 데이터가 아니라, 직렬화했다가 다..

728x90