Observable
(вместе с другими реактивными типами) разработан с плавным интерфейсом, в котором каждый вызов возвращает новый экземпляр, улучшенный с объявленным поведением.
, чтобы проиллюстрировать эту мысль, это:
Observable<Object> o = newObservable();
o.doOnComplete(...);
o.doOnEach(...);
... отличается от этого:
Observable<Object> o = newObservable()
.doOnComplete(...)
.doOnEach(...);
в предыдущем фрагменте, вызовы doOnComplete()
и doOnEach
создают новый экземпляр Observable
, но, поскольку они не назначены обработчику, они просто отбрасываются без улучшения o
с этими поведениями.другими словами - эти методы не изменяют свой получатель.
последний пример - идиоматический подход.o
в этом случае - это накопленный результат применения поведений, предоставленных doOnComplete()
и doOnEach
к первоначально сконструированному потоку.
попробуйте обновить getData()
, используя второй подход, и посмотрите, решит ли это вашу проблему.
также, я думаю, doSend()
можно упростить как:
Observable.fromFuture(this.send(message))
... если, конечно, у вас нет другой логики, которую вы решили опустить.