Допустим, у меня есть Flowable, который используется в разных частях приложения.
В каждом фрагменте, где я хочу это наблюдать, я конвертирую его в LiveData с LiveDataReactiveStreams.fromPublisher
, чтобы избежать утечек и сбоев. Теперь у меня есть LiveData, который обертывает мой Flowable.
Затем я передаю LiveData в свою ViewModel (в ViewModelFactory). Насколько я понимаю, я могу продолжать использовать LiveData, не беспокоясь об утечках.
Теперь, вместо того, чтобы напрямую наблюдать за LiveData, у меня возникает соблазн преобразовать его обратно в Flowable с LiveDataReactiveStreams.toPublisher
и Flowable.fromPublisher
и вместо этого подписаться на Flowable. Теперь это Flowable, который обертывает LiveData, который обертывает Flowable.
Мой вопрос: нужно ли мне беспокоиться об утилизации подписок на этот Flowable? Я надеюсь, что LiveData будет действовать как «барьер», предотвращая утечку моего контекста обратно в корневой Flowable, но я не уверен в этом.
Другими словами:
- Flowable A существует в глобальном контексте
- В каждом фрагменте A заключена в LiveData B, которая задается как свойство ViewModel фрагментов.
- Когда обычно я наблюдаю за LiveData B, я вместо этого оборачиваю его в Flowable C.
- Я подписываюсь на Flowable C и игнорирую возвращенные одноразовые
Будут ли представления, доступные в C, перетекать в A, когда фрагмент будет уничтожен?