Programação Reativa com RxAndroid

Programação Reativa com RxAndroid

Apresentação realizada no Android MeetUp #2 na Jump Brasil - Recife/PE

6e0dde7b2874a2301d985a0e691bfb6f?s=128

Pedro Felipe

August 08, 2016
Tweet

Transcript

  1. Programação Reativa com RxAndroid PEDRO MOURA AGOSTO/2016 “RxJava is a

    great library, but it’s not easy to get started.” Ribot Labs
  2. Pedro Moura Analista de Sistemas @ FAFICA Mestrando em Engenharia

    de Software @ C.E.S.A.R. Edu
  3. AGENDA • Introdução ◦ Chaves: Já chegou o disco voador

    ◦ Reactive Extensions ◦ Old, but gold • Conceitos Básicos ◦ Observable ◦ Observer ◦ Operators ◦ Schedulers • Showcase: Android + RX + Retrofit + Github API • Referências
  4. INTRO Observer Pattern • Observer • Observable

  5. RX - REACTIVE EXTENSIONS • By Erik Meijer. • “The

    Reactive Extensions is a library for composing asynchronous and event-based programs using observable sequences.[...]”
  6. RX - REACTIVE EXTENSIONS • By Erik Meijer. • “The

    Reactive Extensions is a library for composing asynchronous and event-based programs using observable sequences.[...]”
  7. INTRO Old, but gold! ◦ Execução de código de forma

    assíncrona ◦ Execução e controle de processos concorrentes ◦ Tratamento de erros ◦ Escalabilidade
  8. CONCEITOS BÁSICOS OPERATOR OBSERVABLE OBSERVER SCHEDULER

  9. rx.Observable<T>

  10. rx.Observable<T>

  11. rx.Observer<T> Iterator<T> T next() boolean hasNext() throws RuntimeException Observable/Observer<T> onNext(T

    t) onCompleted() onError(Throwable t)
  12. rx.Observer<T>

  13. rx.Observer<T>

  14. rx.Observer<T>

  15. rx.Observer<T>

  16. rx.Observer<T>

  17. rx.Observer<T>

  18. rx.Observable.Operator “Cada implementação do ReactiveX de linguagens específicas implementam uma

    série de Operators. Embora haja muito coincidência entre implementações, há também alguns operadores que só são aplicadas em determinadas implementações. Além disso, cada implementação tende a nomear seus operadores para se assemelham aos de métodos semelhantes que já estão familiarizados de outros contextos daquela linguagem específica.” - ReactiveX.
  19. rx.Observable.Operator • Operadores de Criação ◦ Create ◦ Empty /

    Never / Throw ◦ From ◦ Range ◦ [...] • Operadores de Transformação ◦ FlatMap ◦ Map ◦ GroupBy ◦ Scan ◦ [...]
  20. rx.Observable.Operator • Operadores de Filtragem ◦ Distinct ◦ Filter ◦

    First ◦ Skip ◦ Take ◦ [...] • Operadores de Combinação ◦ Merge ◦ Zip ◦ Join ◦ [...]
  21. rx.Observable.Operator • Operadores de Erro ◦ Catch ◦ Retry •

    Operadores de Utilidade • Operadores de Condicionais e Booleanos • Operadores Matemáticos • Operadores de Backpressure • Operadores Conectáveis • Operadores de Conversão (To)
  22. rx.Schedulers “If you want to introduce multithreading into your cascade

    of Observable operators, you can do so by instructing those operators (or particular Observables) to operate on particular Schedulers” - ReactiveX
  23. rx.Schedulers/AndroidSchedulers • Schedulers.io() • Schedulers.computation() • Schedulers.immediate() • Schedulers.newThread() •

    Schedulers.trampoline() • Schedulers.reset() • Schedulers.shutdown() • Schedulers.start() • AndroidSchedulers.mainThread()
  24. SHOWCASE: ANDROID + RX + RETROFIT+ GITHUB API Gradle Retrolambda

    Plugin https://github.com/evant/gradle-retrolambda
  25. SHOWCASE: ANDROID + RX + RETROFIT+ GITHUB API https://api.github.com/

  26. SHOWCASE: ANDROID + RX + RETROFIT+ GITHUB API http://www.jsonschema2pojo.org/

  27. SHOWCASE: ANDROID + RX + RETROFIT+ GITHUB API

  28. SHOWCASE: ANDROID + RX + RETROFIT+ GITHUB API

  29. SHOWCASE: ANDROID + RX + RETROFIT+ GITHUB API

  30. SHOWCASE: ANDROID + RX + RETROFIT+ GITHUB API

  31. SHOWCASE: ANDROID + RX + RETROFIT+ GITHUB API

  32. SHOWCASE: ANDROID + RX + RETROFIT+ GITHUB API

  33. SHOWCASE: ANDROID + RX + RETROFIT+ GITHUB API

  34. SHOWCASE: ANDROID + RX + RETROFIT+ GITHUB API https://api.github.com

  35. None
  36. MEMORY LEAK - INICIANTE

  37. THERE IS A LIB FOR THAT... • Mosby (http://goo.gl/4b7CvQ) •

    Nucleus (https://goo.gl/4WIQjy)
  38. REFERÊNCIAS - React 2014: Erik Meijer - What does it

    mean to be Reactive? (https://goo.gl/L4X5XY) - Get Reactive by Wolfram Rittmeyer/Pascal Welsch (https://goo.gl/v3bkLv) - Functional Reactive Programming with RxJava (https://goo.gl/ffjvzG) - Github RxJava (https://goo.gl/8Sf6OZ) - Github Showcase (https://goo.gl/NMn61L) - ReactiveX (http://reactivex.io/) - Medium: Crunching RxAndroid (https://goo.gl/8WUukp)