6

假设您有一个带有 UI 层、ViewModel 和 Repository 的 MVVM 应用程序。假设在您的存储库中,您通过SingleRetrofit 调用从 API 获取一些数据,并将其转换为 UI 就绪的视图状态对象。

在我看来,您有两个主要选择(假设您想在 UI 层使用 LiveData,我不包括从 UI 观察 Rx 类型的选项):

  1. Observable从存储库中公开您的 Rx ,并subscribe()在 ViewModel 中公开。在订阅者的onNext()中,使用setValue()将您的 viewstate 对象包装在 aMutableLiveData中,并将其作为非可变对象公开LiveData给 UI。在 中手动处置订阅onCleared()

  2. 从存储库中公开您的 Rx并让 ViewModel 使用'sObservable订阅它,在这种情况下,手动处置是不必要的,而且根本没有。但是,只要变为活动/不活动(又名至少有一个观察者),就会订阅/取消订阅,因此此选项将在每次配置更改时停止所有流处理,这与 (1) 不同(尽管只有在冷的情况下)。LiveDataReactiveStreamsfromPublisher()MutableLiveDataLiveDataReactiveStreamsLiveDataObservable

这种分析在任何方面都是不正确或不完整的吗?这两种方法之间还有其他重要区别吗?

4

0 回答 0