Да, это может показаться немного амбициозным, но вот чего я хочу добиться:
У меня есть класс, который содержит мой горячий Observable
, классу требуется некоторое время, чтобы подготовить его правильно (создать его в другом месте и получить ссылку), поэтому, когда другой класс запрашивает его, ссылка может быть все еще нулевой (вызывая нулевой указатель). То, чего я пытаюсь добиться, похоже на шаблон NullObject: вернуть пустое наблюдаемое (вместо null), на которое можно безопасно подписаться, и когда Observable создан правильно, начать испускать элементы.
Единственный способ решить эту проблему — создать PublishSubject
, который действует как мост между клиентскими классами и классом ObservableHolder. Ссылка PublishSubject всегда возвращается клиенту, и когда Observable
будет готова, он просто перенаправит все события в тему. Это хорошее решение? Или можно сделать лучше?
@изменить
Я решил остаться со своим решением, я думаю, что после его обертывания в классе это достаточно хорошее решение. Я проголосовал за приведенный ниже ответ, однако он не соответствует моей проблеме, поскольку не имеет прямого отношения к реализации rx-java
, однако было полезно предложить шаблон прокси.
PublishSubject
- это простой способ добиться этого в целом. Если вы хотите рассказать больше о том, как подготавливается наблюдаемое, возможно, мы также сможем разработать беспредметное решение. - person akarnokd   schedule 11.11.2015PublishSubject
кажется разумным. Еще одно решение, которое приходит на ум, — сделать так, чтобы ваш наблюдаемый метод подготовки возвращалObservable<Observable<T>>
, но выглядел не так чисто, как реализация с субъектом. - person AndroidEx   schedule 11.11.2015