Android App Development
iOS App Development
Flutter App Development
Cross Platform App Development
Hire on-demand project developers and turn your idea into working reality.
Big thanks to Webkul and his team for helping get Opencart 188.8.131.52 release ready!
Updated 19 July 2018
In this blog, we will learn about using Android Room, LiveData And View Model from the Android Architecture Components.
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:
Ok, wanna read more, let’s get started :
We will cover three major parts of the Android Architecture Components Library.
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
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 :
Whenever we need to use ViewModels inside our Activity, the Activity must extend LifecycleActivity.
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 :
Hope This helps you, Keep coding and keep sharing 🙂
Reference : https://android.jlelse.eu/android-architecture-components-room-livedata-and-viewmodel-fca5da39e26b
Your email address will not be published. Required fields are marked*
Save my name email and website in this browser for the next time I comment.
I personally never felt the need to close the database.
As the room instance will automatically manage the same.
As per the official docs on developer.android
“You should follow the singleton design pattern when instantiating an AppDatabase object, as each RoomDatabase instance is fairly expensive, and you rarely need access to multiple instances.”
So, i don’t think you should open and close the database.
But if you have any such requirement then you can have a look at the close function.
Do keep in mind that you will need to open the database again before actually performing any other operation.
Tip : don’t close in onDestroy(), close in on Stop() and open in onStart().
For any other discussion, feel free to communicate.
Enquiry or Requirement
If you have more details or questions, you can reply to the received confirmation email.