What is LiveData?
- Ensures the UI matches the data state
- One of the greatest things about using the reactive approach is that you don’t need to update the UI every time the data changes. Instead, the active observers are notified for data changes and they update the UI. This saves a lot of manual updates and time developing an application.
- Up to date data
- If an activity goes in the background and then comes back to the screen, its observers are notified if there are changes in the data. This way the observers update the UI of the activity with the newest data available.
- No memory leaks
- Observers are bound to specific lifecycle objects and clean up themselves after the lifecycle is destroyed.
- No crashes due to stopped activities
- If an activity is inactive, then the observers in the activity don’t receive LiveData events because LiveData respects the lifecycle of the app components.
LiveData works great in combination with the other Architecture Components. In the next chapters we will see examples of writing SQL queries which return LiveData objects and examples of using LiveData in ViewModel and Repository.
As we said in the previous article Model is the data in our application. These are classes representing objects that we persist in our database or that we get from network calls to services.
Room has great integration with LiveData. Results from SQL queries can be easily wrapped in LiveData container. This way LiveData can be observed in the UI. When the data is changed in the database, all active observers get notified and update the corresponding views.