Escolar Documentos
Profissional Documentos
Cultura Documentos
Hola!
Soy Cristian Gomez
Android developer
@PagerInc, Co-Organizer
@MedellinAndroid.
▪ Conceptos generales
▪ Porque RxUI?
▪ El problema
▪ Componentes
▪ Encadenando todo
1
Rx - Conceptos generales
Reactive world
Rx
Agregar control sobre la lógica
y el encadenamiento de acciones
en la UI
RxJava 2
Observable Flowable
No hay manejo de Permite manejo de
backpressure. backpressure.
Backpressure
AndroidSchedulers
Bases
RxMVP?
UI interface
Definición de las acciones
permitidas
interface FlightView {
Observable<String> fromChanges();
Observable<String> toChanges();
Observable<FlightModel> saveClicked();
Consumer<List<String>> showFrom();
Consumer<List<String>> showTo();
Consumer<Throwable> showError();
Consumer<Object> showLoading();
Consumer<FlightModel> showSaved();
Consumer<Boolean> showButton();
}
interface FlightView {
Observable<String> fromChanges();
Observable<String> toChanges();
Observable<FlightModel> saveClicked();
Consumer<List<String>> showFrom();
Consumer<List<String>> showTo();
Consumer<Throwable> showError();
Consumer<Object> showLoading();
Consumer<FlightModel> showSaved();
Consumer<Boolean> showButton();
}
interface FlightView {
Observable<String> fromChanges();
Observable<String> toChanges();
Observable<FlightModel> saveClicked();
Consumer<List<String>> showFrom();
Consumer<List<String>> showTo();
Consumer<Throwable> showError();
Consumer<Object> showLoading();
Consumer<FlightModel> showSaved();
Consumer<Boolean> showButton();
}
interface FlightView {
Observable<String> fromChanges();
Observable<String> toChanges();
Observable<FlightModel> saveClicked();
Consumer<List<String>> showFrom();
Consumer<List<String>> showTo();
Consumer<Throwable> showError();
Consumer<Object> showLoading();
Consumer<FlightModel> showSaved();
Consumer<Boolean> showButton();
}
interface FlightView {
Observable<String> fromChanges();
Observable<String> toChanges();
Observable<FlightModel> saveClicked();
Consumer<List<String>> showFrom();
Consumer<List<String>> showTo();
Consumer<Throwable> showError();
Consumer<Object> showLoading();
Consumer<FlightModel> showSaved();
Consumer<Boolean> showButton();
}
interface FlightView {
Observable<String> fromChanges();
Observable<String> toChanges();
Observable<FlightModel> saveClicked();
Consumer<List<String>> showFrom();
Consumer<List<String>> showTo();
Consumer<Throwable> showError();
Consumer<Object> showLoading();
Consumer<FlightModel> showSaved();
Consumer<Boolean> showButton();
}
interface FlightView {
Observable<String> fromChanges();
Observable<String> toChanges();
Observable<FlightModel> saveClicked();
Consumer<List<String>> showFrom();
Consumer<List<String>> showTo();
Consumer<Throwable> showError();
Consumer<Object> showLoading();
Consumer<FlightModel> showSaved();
Consumer<Boolean> showButton();
}
interface FlightView {
Observable<String> fromChanges();
Observable<String> toChanges();
Observable<FlightModel> saveClicked();
Consumer<List<String>> showFrom();
Consumer<List<String>> showTo();
Consumer<Throwable> showError();
Consumer<Object> showLoading();
Consumer<FlightModel> showSaved();
Consumer<Boolean> showButton();
}
interface FlightView {
Observable<String> fromChanges();
Observable<String> toChanges();
Observable<FlightModel> saveClicked();
Consumer<List<String>> showFrom();
Consumer<List<String>> showTo();
Consumer<Throwable> showError();
Consumer<Object> showLoading();
Consumer<FlightModel> showSaved();
Consumer<Boolean> showButton();
}
interface FlightView {
Observable<String> fromChanges();
Observable<String> toChanges();
Observable<FlightModel> saveClicked();
Consumer<List<String>> showFrom();
Consumer<List<String>> showTo();
Consumer<Throwable> showError();
Consumer<Object> showLoading();
Consumer<FlightModel> showSaved();
Consumer<Boolean> showButton();
}
Data
Definición del acceso a datos
public class FlightWorker extends Fragment {
public FlightWorker() {
setRetainInstance(true);
findCity = FindCity.create();
saveFlight = SaveFlight.create();
}
flatMap?
Resolviendo el
Activity
public class FlightActivity extends AppCompatActivity {