ViewModels and LiveData: Patterns + AntiPatterns

Jose Alcérreca
Sep 12, 2017 · 8 min read

Views and ViewModels

Distributing responsibilities

Typical interaction of entities in an app built with Architecture Components

View references in ViewModels

ViewModels persist configuration changes

Observer Pattern

Typical subscription from an activity or fragment.

Fat ViewModels

Using a data repository

Dealing with data state

Saving activity state

Events

LiveData<String> snackbarMessage = new MutableLiveData<>();
snackbarMessage.setValue("Item saved!");

Leaking ViewModels

Observer pattern in the UI and callbacks in the data layer
The activity is finished but the ViewModel is still around

LiveData in repositories

Transformations example [source]

Extending LiveData

When not to extend LiveData

Android Developers

The official Android Developers publication on Medium

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store