- Use RxJava
- Kotlin
- https://www.androidhive.info/RxJava/android-getting-started-with-reactive-programming/github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/
- https://www.androidhive.info/RxJava/rxjava-operators-introduction/
- https://www.androidhive.info/RxJava/rxjava-operators-just-range-from-repeat/
- https://www.androidhive.info/RxJava/rxjava-understanding-observables/
- https://github.com/ReactiveX/RxJava/wiki/What%27s-different-in-2.0#when-to-use-flowable (a bit tricky to understand)
- https://www.androidhive.info/RxJava/map-flatmap-switchmap-concatmap/
- https://github.com/mgp/effective-rxjava/blob/master/items/understand-switch-map.md(really important to understand switchMap)
- https://code.tutsplus.com/tutorials/rxjava-for-android-apps-introducing-rxbinding-and-rxlifecycle--cms-28565
- https://www.androidhive.info/RxJava/rxjava-operators-concat-merge/
- https://www.androidhive.info/RxJava/mathematical-operators-rxjava/
- https://github.com/ReactiveX/RxJava/wiki/Mathematical-and-Aggregate-Operators
- https://www.baeldung.com/rxjava-math
- https://search.maven.org/artifact/com.github.akarnokd/rxjava2-extensions/0.20.3/jar
- https://www.androidhive.info/RxJava/android-rxjava-networking-with-retrofit-gson-notes-app/
- https://www.androidhive.info/2017/11/android-recyclerview-with-search-filter-functionality/
- https://www.androidhive.info/RxJava/android-rxjava-instant-search-local-remote-databases/
- https://www.androidhive.info/RxJava/flatmap-concatmap-operators-flight-tickets-app/
- https://www.androidhive.info/RxJava/rxjava-operators-repeat-skip-take-takeuntil/