RxAndroid — Introdução Básica — Primitivos RxJava

RxJava possui uma forma diferente de trabalhar, seu principal conceito é reagir a resultados. Com o RxJava temos acesso a um framework capaz de gerenciar e tratar itens de forma reativa reactive way e podemos criar manipulações complexas e gerenciar esquemas em uma interface bastante amigável ao usuário.

No Rx Java temos os seguintes primitivos:
- Observables
- Subscriptions
- Schedulers

Observable
 Observables são uma fonte de dados que podemos observar para os dados emitido. Na maioria dos casos vamos usar Observables no desenvolvimento da nossa aplicação.

Este tipo primitivo é basicamente uma interface universal para usar data stream de forma *reactive* 

Quando apenas criamos o Observable usando .just() não estamos indicando quando o nosso Observable vai começar a emitir os dados, para que isso ocorra, devemos definir um subscriber usando .subscribe(), dessa forma os dados começaram a ser emitidos.

exemplo Observable

Note que podemos definir Observables como do tipo Hot ou Cold, de maneira superficial a diferença entre eles é que o primeiro produz os items assim que é criado, independente de algo está pronto ou não para receber os dados do stream.

Disposable
Trata-se de uma ferramenta do Rx 2.0 que usamos para controlar o ciclo de vida do Observable.

É importante ressaltar que principalmente no caso do Android, o stream de dados produzido pelo Observable seja limitado, um stream boundless é uma das principais fontes de memory leaks

O Disposable possui uma interface bem simples, com apenas dois métodos, .dispose() e isDisposed()

exemplo Disposable

Vale notar que geralmente não é muito usado, mas é bastante útil quando temos um conjunto de Observables que vão ser cancelados ao mesmo tempo, por exemplo, quando o ciclo de vida de um Fragment ou Activity é destruído.

Schedulers
São capazes de controlar quando e onde o código deve ser executado.

Usamos schedulers para executar tarefas de longa duração, em um thread em background, dessa forma, evitando o bloqueio do thread UI, algo extremamente necessários quando falamos de desenvolvimento Android.

exemplo Schedulers

Código completo : https://github.com/lluzalves/RxAndroid-Basics