Модель Controller
+ EventBus
работает очень хорошо в Android, но события по стрельбе повсюду становятся действительно грязными. Если контроллер получает запрос на загрузку одних и тех же данных несколько раз, легко начать загрузку в первый раз и игнорировать последующие запросы во время его загрузки и начать прослушивание будущих запросов на загрузку после того, как будет сделана загрузка. Как я могу сделать это с помощью RxJava (MVP предъявителей?)Как заменить шаблон EventBus на презентаторы RxJava?
Сценарий
У меня есть синглтон ColorModel
в моем андроид приложение, которое загружает мой любимый цвет (from multiple sources), как Observable<String>
(String == hexcode).
Мои ColorPresenter
захваты в ColorModel
, преобразующие String
hexcode в Color
объект, который может быть отображен в ColorView
.
Это основные части моей логики:
Observable<String> getColor()
(отColorModel
)Observable<Color> getColorForView()
(отColorPresenter
)subscribe()
(вColorView
)
Проблемы
- # 1 создается при каждой подписке. Если у меня есть несколько докладчиков, вызывающих # 1, это очень расточительно. Я не хочу, чтобы этот шаг повторялся (инициировался только при первом вызове, а затем кешировался после).
- Когда я отменил подписку в течение
onStop()
, # 2 отменил (желаемый), но эта отмена писем пузыри до # 1 тоже отменяется (не требуется).
Вы должны указать нам свой код. Просто описать это недостаточно. – Enigmativity
Также первая проблема действительно не кажется большой проблемой - насколько дорогостоящим является дорогостоящее? – Enigmativity
@ Энигматичность притворяется, что это очень дорогостоящий вычислительный процесс (я не загружаю любимый цвет, это упрощенная версия) – ZakTaccardi