Android Room, Live Data And View Model

Updated 19 July 2018

Save

In this blog, we will learn about using Android Room, LiveData And View Model from the Android Architecture Components.

Why do I need to know about these?

Well, this makes Android development easy and fast.

What exactly is Android Architecture Components?

A new collection of libraries that help you design robust, testable, and maintainable apps. — developer.android.com

How does this help me as a developer?

It helps us address two pain points:

  1. Manage our UI components lifecycle
  2. Persist data over configuration changes

Ok, wanna read more, let’s get started :

We will cover three major parts of the Android Architecture Components Library.

  1. Room
  2. ViewModel
  3. LiveData

ROOM

Android Room is a library that helps you in easily accessing the database. You can define your database by adding annotations in your Model class. Now you can query your data without having to deal with cursors or loaders.

If you have no knowledge about the android room, then you should read this article:

Android Room Persistence Library

 

If you have some knowledge about the android room and are having some difficulties still in using, you should read this article :

Saving Complex Objects using Android Room Library

 

View Model

The ViewModel class is designed to store and manage UI-related data in a lifecycle conscious way. The ViewModel class allows data to survive configuration changes such as screen rotations. — developer.android.com

What this means is that ViewModel class can retain its state/data even during an orientation change.

ViewModels do not contain code related to the UI. This helps in the decoupling of our app components.

In Room, the database instance should ideally be contained in a ViewModel rather than on the Activity/Fragment.

Creating an Android ViewModel

Every ViewModel class must extend the ViewModel class. If your ViewModel needs the application context, it must extend AndroidViewModel. The ViewModel will contain all the data needed for our Activity.

Using this ViewModel and observing changes in activity/fragment.

All you need to do is activate your ViewModel Instance after your activity/fragment has been created. You can do this for activity by initializing the View Model Instance in onCreate Method of your activity or onActivityCreatedmethod of your fragment.

For Fragment something like this needs to be done :

For Activity something like this :

NOTE:
Whenever we need to use ViewModels inside our Activity, the Activity must extend LifecycleActivity.

LiveData

LiveData is an observable data holder class. Unlike a regular observable, LiveData is lifecycle-aware, meaning it respects the lifecycle of other app components, such as activities, fragments, or services. This awareness ensures LiveData only updates app component observers that are in an active lifecycle state.  — developer.android.com

What do we need to change for using live data in our current Android Project?

I have used only  these :

You can find the whole list of dependencies over here :

https://developer.android.com/topic/libraries/architecture/adding-components.html

Changes in your Dao class.

Hope This helps you, Keep coding and keep sharing 🙂

 

 

Reference : https://android.jlelse.eu/android-architecture-components-room-livedata-and-viewmodel-fca5da39e26b

author
. . .

Leave a Comment

Your email address will not be published. Required fields are marked*


4 comments

  • webserveis
    • Anchit Makkar
  • Hendra Wijaya Djiono
    • anchit (Moderator)
  • Start a Project


      Message Sent!

      If you have more details or questions, you can reply to the received confirmation email.

      Back to Home