RxUi: Observable <-> Observable
Minimal implementation of the concept of talking to Android View layer in a Reactive way described here.
RxUi solves 3 main problems of communication between Presenters/ViewModels/etc and View layer in Android applications:
Main Thread
should be part of View layer, Presenters/ViewModels/etc should not know about it.- Action posted to
Main Thread
should be part ofDisposable
so you coulddispose()
it and prevent execution. - Backpressure occurred on the View layer should be detected and handled on Presenter/ViewModel/etc layer above.
Sample Apps
Check Sample app written in Java and Sample app written in Kotlin.
RxUi is so tiny that you may not even see it in the code at the first sight!
Basically, RxUi is just two main functions:
bind(Observable<T>): Disposable
ui(Consumer<T>): Function<Observable<T>, Disposable>
And concept of Observable <-> Observable
in the View layer when View only produces Observable
s and consumes Observable
s.
interface SignInView {
// Produces.
Observable<String> login();
Observable<String> password();
Observable<Object> signInClicks();
// Consumes.
Function<Observable<Boolean>, Disposable> signInEnable();
Function<Observable<SignInResult>, Disposable> signInResult();
}
Download
RxUi
Only two functions at the moment: RxUi.bind()
(use it in Presenters/ViewModels) and RxUi.ui()
use it in View
layer.
compile 'com.artemzin.rxui2:rxui:2.0.0'
RxUi Test
Only one function at the moment: TestRxUi.testUi()
, basically same as RxUi.ui()
except that it's synchronous and does not know about Main Thread.
testCompile 'com.artemzin.rxui2:rxui-test:2.0.0'
RxUi Kotlin
Only one extension function at the moment: Observable.bind()
, absolutely same as RxUi.bind()
but easier to use in Kotlin.
compile 'com.artemzin.rxui2:rxui-kotlin:2.0.0'
Made with