В хабре вычитал кучу уроков и статьей по RX. Все приводят прмиеры с проблемным asyncTaskom который может не правильно запрос обработать и null выдать или еще чего. Дак для этого нужно exception нужно обрабатывать. А насчет запросов Retrofit же есть. Ну ни как не пойму полезность RXJava. Зачем он нужен вообще?
RxJava - это библиотека, которая реализует реактивный подход к программированию. Что такое реактивное программирование можно почитать на сайте проекта ReactiveX API.
ReactiveX is a combination of the best ideas from the Observer pattern, the Iterator pattern, and functional programming
ReactiveX - это комбинация лучших идей шаблонов проектирования Наблюдатель
и
Итератор
и функционального программирования.
Если совсем простыми словами, то это подход при котором вы оперируете событиями и потоками данных. Т.е. вместо "запустили и ждем результат" или "как отработает надо запустить callback и передать в него результат" вы говорите "Вот тебе труба, сиди и смотри на нее. Как только в нее посыпятся данные - обработай их, а я пошел дальше".
Большей частью такой подход полезен для создании асинхронных приложений и изничтожения callback hell'а.
Если совсем грубо, то у вас появляются такие сущности как Observer
(наблюдатель) и Observable
(наблюдаемое). Наблюдатель наблюдает за наблюдаемым и, когда из наблюдаемого посыпались события(объекты) - производит с потоком этих событий какие либо действия. В частности никто не мешает ему быть "Наблюдаемым" для другого "наблюдателя" например.
Представьте себе длинную комнату с множеством стоящих рядом коробок(наблюдаемое). У каждой коробки стоит рабочий(наблюдатель) и, как только ему в коробку упал объект - он берет его, что-то с ним делает, кладет в следующую по очереди коробку и берет следующий объект. Самый цимус в том, что разные этапы обработки не завязаны друг на друга, т.е. все рабочие работают одновременно - пока последний обрабатывает объект №1, который прошел уже почти весь конвейер, рабочий из середины работает с объектом №5, а первый рабочий уже стоит курит и ждет, когда из дыры в стене повалят новые объекты.
Java своим синтаксисом не позволяет использовать паттерны реактивного программирования. RxJava позволяет писать программы в реактивном стиле
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Оказывается, можно сделать такую удивительную магию как:
Создал консольный калькулятор, когда ввожу число ошибка NumberFormatException