RxJava and the Architecture Components
As apps get increasingly complex and sophisticated, the greater the need is
to have an explicit architecture for your app, one that allows for clean
extensibility and testability.
While there are many architecture options – MVC, MVP, MVVM, VIPER, MVI, etc. –
one common theme among all their adherents is a move towards reactive
programming. RxJava makes it easier for you to model your app’s interactions
as a stream of events that you can manipulate with a flexible threading
To further empower developers to create coherent architectures, in 2017 Google
released the first edition of the Architecture Components. The Architecture Components
are a key portion of the Android Jetpack initiative and will be central to
ongoing Android app development.
During this one-day seminar, we will explore the following:
- What is reactive programming
- What is RxJava? What is RxAndroid?
- How do we make something reactive?
- How do we manage threads with RxJava and RxAndroid?
- How do we manipulate the data that is flowing through RxJava?
- How does caching work with RxJava?
- How can we use RxJava with popular libraries, like Retrofit?
- Are Kotlin coroutines an alternative to RxJava?
LiveData and the Lifecycle Architecture Components
- What is a lifecycle? What has lifecycles?
- How do I create objects that are “lifecycle-aware”?
- What is
LiveData? Is this in contrast to
WalkingDeadData or something?
- How do I use
LiveData for asynchronous work?
- How does
LiveData relate to RxJava?
- What is
ViewModel? How does it relate to
- What is Room? How does it compare to existing ORM solutions?
- How do I perform basic CRUD with Room?
- How do transactions work with Room?
- SQLite is a relational database, so how do I model relations with Room?
- How do I tie Room into
- How do I maintain my database schema over time with Room?
- What is the repository pattern, and how does Room fit in?
- How do I use Room with other database implementations, such as SQLCipher for Android?
- How can we use SQLite’s full-text searching (FTS) capability with Room?
- What is the Paging library? What does it do for us?
- How can we query Room and get our results via the Paging library?
- How can we take pages of data and use them to populate a
- How can we consume paged data in other ways?
- Can we use the Paging library with things other than Room? If so, how?
- What are the options for us to do background work in Android?
- Given all of those, why did Google create
- How do we arrange to do on-demand background work with
- How do we schedule work to be done in the future with
- How do we perform work periodically with