Изучая RXJava я с толкнулся с трудностью в понимании того, как было задумано его использование.
При первом знакомстве у меня сложилось мнение, о том, что это реализация патерна "Слушатель" с полезными фичами. То есть, есть объект, который генерирует события, а подписанные на объект слушатели эти события получают, при этом объект генерирующий события может существовать от начала работы приложения до самого конца.
Но потом заметил, что во всех примерах использования библиотеки, всегда есть готовый набор данных, который передаётся Observable при его создании(за исключением случаев, где Observable должен генерировать события в повторяющихся промежутках времени) и никогда не дополняется и не заменяется для существующего Observable.
Отсюда у меня сложилось впечатление, что Observable надо воспринимать, как одноразовый объект.
То есть, у нас есть набор данных, мы создаём Observable с этим набором и он существует пока набор не устареет, как только набор устарел, мы отписываем всех подписчиков нашего Observable и создаём новый Observable с новым набором данных, на который подписываются слушатели заново.
Некоторые статьи рассказывают о том, что можно с помощью RXJava следить за набором данных на клавиатуре, примеры они конечно же не приводят, но я нашёл вот такой пример:
https://github.com/shekhargulati/rxjava-examples/b...
Здесь используется "вечный" цикл для отслеживания нажатий на клавиатуре и мне кажется это не лучший способ траты ресурсов устройства.
Растолкуйте мне пожалуйста, как же предполагается использовать RXJava?
P.S. В своём android проекте я хотел создать Observable в сервисе, который занимается некоторой работой с сетью и подписывать на него activitys/fragments, что бы они реагировали на изменения извне. Однако, если Observable придётся на каждый запрос пересоздавать, то возникает необходимость постоянно переподписывать слушателей, что не очень удобно, хотя и возможно.