As you probably already know, Android Architecture Components were introduced at Google I/O 17 and, since then, there has been a lot of discussion about them. If you want to catch up on the subject, you can start by watching the Introductory talk Google made at Google I/O.
We noticed that in a lot of tutorials and code samples, Architecture Components are tied together. Sometimes, it looks like they should all be used together for them to work. What if you already have a stable application and you want to start using Architecture Components? You probably don’t want to redo all of the code and risk a few regressions.
The recommended approach is to migrate to one component at a time. You don’t need Navigation to use Room and, you certainly don’t need Room to use LiveData. We did talk about Room in our blog a few months ago, so now, we are going to introduce you to LiveData.
LiveData is an observable data holder class. But unlike a regular observable, it has a major advantage, it is lifecycle-aware. That means that only the observers that are in an active lifecycle state are updated. You can read a little bit more details about LiveData in the official source.
Now, let’s learn by example. Let's imagine we have all of the book titles we read stored in a database and we want to read one of them again, but we don’t know which one to pick. We will press a button and choose one of the titles in our collection randomly and display it in the UI. In the example, we will be using a subclass of LiveData called MutableLiveData. It has setValue and postValue properties used to notify the UI whenever the data changes. We will also be using MVVM.
In your ViewModel, you will need the MutableLiveData object, the method that returns that object and a method that calls setValue on it:
To be able to observe changes of this LiveData object, we can write the following lambda in our Activity/ Fragment:
The observers will always be notified when the method setValue() is called on the MutableLiveData object. In this scenario, when the method loadBook() is invoked, we will receive that update in the View and display the book title in a toast. This approach can be followed to do whatever we need to meet our client requirements.
Find more top mobile app developers worldwide on AppFutura.