android - 我应该在 MVVM 中的哪里链接多个网络请求?存储库的用例?

标签 android mvvm rx-java2 android-architecture-components android-livedata

我正在重构我们的代码库。现在我们有一个单例存储库,它可以发出网络请求并管理与 RxJava 和 Kotlin 协程链接的操作符。

但是,该存储库被注入(inject)到多个 ViewModel 中,并且变得更难以维护。

我想抽象我们的代码库并集成一些用例。据我所知,普遍认为在 useCase 中使用单个网络请求,这就是为什么我不确定链接网络请求。

我需要使用 Observable.zip 和 RxJava 主题链接多个网络请求。

以下流程是正确的方法吗?

Viewmodel 调用 useCase,后者创建网络请求(来自存储库)、处理该网络请求、创建LiveData 并将该 LiveData 转发到 ViewModel,并且从存储库更新主题>,以便存储库可以在所有网络请求完成后发出一些数据

然后我们的存储库仍然与我们当前的方法类似,代码较少,并且仅负责多个网络请求链接。

我希望我说得足够清楚。我研究了多个 MVVM 示例,但它们对于具有复杂网络逻辑的实际应用程序似乎并不实用。

最佳答案

您不应在存储库中链接不同的 API 调用。映射到更复杂的域对象应该在用例中完成。通常有多个存储库,每个存储库负责业务域模型的某些部分(例如 UsersRepository、PostsRepository 等)。用例可以依赖于多个存储库。

Example (Plaid app)

关于android - 我应该在 MVVM 中的哪里链接多个网络请求?存储库的用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56375206/

相关文章:

android - 在 RxJava2 中将 Listener 转换为 Single

android - Observables 的 RXJava 条件执行 + 空处理

c# - 具有动态可编辑列的 DataGrid

Android - webview 中断

Android - 在调用方法之前不断增加延迟,直到用户停止交互

java - 图片 + 文本的 ListView 异常

c# - 在顶层使用 DependencyInjection,如何将服务传递到架构中?

mvvm - 如何在 TreeView Silverlight 4.0 中创建 DataTemplate

android - RxJava : Creating observable from a Nullable object

android - 从脚本运行 adb shell 命令而不退出 shell