1. Use Immutables in all object models to reduce GC
2. Separate ViewState, ViewModel, AdapterModel, DataModel and wrap the adapter code in an AsynchTask to be done on the non-UI thread. If using a binding library that is the only thing that should be on the damn UI thread!
Now, how you handle the callbacks and data flows is up to you. But I do not believe that you need to use the heavy RxJava or agera to achieve that as you could make up your own monad and promise implementations.
The magic bullet towards app Resposniveness is not rxJava!
Its actually knowing how the Dalvik/Art VMs work and how the graphics UI pipeline in Android works and changing things to minimize what occurs on the UI threads.