Я все еще довольно новичок в RxJava, и я использую его в приложении для Android. Я прочитал метрическую тонну по этому вопросу, но все еще чувствую, что что-то не хватает.
У меня есть следующий сценарий:
У меня есть данные, хранящиеся в системе, к которой обращаются через различные служебные соединения (AIDL), и мне нужно получить данные из этой системы (может произойти 1-й номер асинхронных вызовов). Rx помог мне упростить этот код. Однако весь этот процесс имеет тенденцию занимать несколько секунд (более 5 секунд +), поэтому мне нужно кэшировать эти данные, чтобы ускорить собственное приложение.
Требования на данный момент:
-
Первоначальная подписка, кеш будет пустым, поэтому нам нужно подождать необходимое время для загрузки. Ничего страшного. После этого данные должны быть кэшированы.
-
Последующие нагрузки должны вытащить данные из кеша, но затем данные должны быть перезагружены, а кеш диска должен быть за кулисами.
Проблема: у меня две наблюдаемые - A и B. A содержит вложенные Observables, которые извлекают данные из локальных сервисов (т.е. здесь). B намного проще. B просто содержит код для извлечения данных из дискового кэша.
Необходимо решить: a) Верните кешированный элемент (если он кэширован) и продолжайте повторно загружать кеш диска. б) Кэш пуст, загружает данные из системы, кэширует его и возвращает. Последующие вызовы возвращаются к "a".
У меня было несколько человек, которые рекомендуют несколько операций, таких как flatmap, merge и даже темы, но по какой-то причине у меня возникают проблемы с подключением точек.
Как я могу это сделать?