понедельник, 6 июля 2015 г.

Вступ до RxJava для Android #1

Сам я мав деякі сумніви щодо реактивного програмування і вирішив докладно розібратися в даному полі, а заодно і донести свої знання до громади, може комусь і знадобиться.

RxJava - це бібліотека реактивного програмування, що дозволяє вам представити будь-що у вигляді асинхронного потоку даних, який може бути створений в будь-якому потоці, може бути функціонально трансформований та бути використаний чим завгодно.
Реактивне програмування - парадигма програмування, орієнтована на потоки даних і поширення змін. Це означає, що повинна існувати можливість легко висловлювати статичні і динамічні потоки даних, а також те, що виконувана модель повинна автоматично поширювати зміни крізь потік даних.
Відмовостійкість, орієнтованість на події і масштабованість - чотири принципи нині популярного реактивного програмування. Саме дотримуючись їх створюється backend великих систем з одночасною підтримкою десятків тисяч з'єднань.
Простота, гнучкість і розширюваність коду - принципи, які можна закріпити за реактивним UI.




 Перед тим, як ми детально розглянемо, що таке RxJava, ми розглянемо, які можливості має бібліотека RxJava.



Це скріншот з додатку Google’s IOSched. Коли користувач вводить текст в SearchWidget, що в Actionbar відбувається запит до бази даних і результат виводиться списком під Actionbar.

Тепер припустимо, що ви повинні зробити щось на зразок цього для програми яку ви пишете, але припустимо, що є деякі додаткові вимоги, а саме, що запит повинен виконувати, тільки якщо:
  • Введено хоча б три символи в SearchWidget
  • Відбулась затримка принаймні в 100 мс перед вводом наступного символу в SearchWidget
 Як ви вважаєте, скільки рядків коду нам знадобиться для реалізації подібної задачі? Якщо ви заглянули у вихідний код IOSched source code,то маєте враження на що це схоже. Слідуючи стратегії використаній в прикладі слід встановити listener на SearchWidget та використати if-else для перевірки кількості символів. Далі слід встановити Handler, який буде запускати процес після затримки в 100 мс.
Знаєте чим прекрасна бібліотека RxJava? Як тілки ви спробуєте RxJava Observable, який створений, щоб повідомити про зміну тексту в SearchWidget, ви можете зробити еквівалент цього лише в три рядки коду. Використовуючи RxJava, ви додасте в свій проект гнучкості та зрозумілості в коді.


Джерела:
1. Android. Пару слов об MVP + rxJava
2. An Introduction to RxJava for Android (Pt. 1)
3. ReactiveX/RxJava
4. Реактивное программирование под Android
5. Реактивное программирование
6. The Reactive Manifesto 

Комментариев нет:

Отправить комментарий