【问题标题】:Android MVP with RxAndroid + RetrofitAndroid MVP with RxAndroid + Retrofit
【发布时间】:2015-11-20 06:34:21
【问题描述】:

最近我开始阅读很多关于 MVP 的内容,我想用它来练习我的项目。

但是我无法正确理解 Rx + Retrofit 代码应该去哪里?我认为它应该通过交互器在模型层中,但仍然有人可以分享一些关于此的信息吗?

还有 RX 回调会发生什么? onNext()、onCompleted() 和 onFailure() 将数据传递回 Presenter 还是我们实现侦听器然后将其传递给 Presenter?

当我在 onNext() 中获取数据时,我还想持久化数据(Realm/StorIO),所以再次将它传递给另一个 DataLayer 或者它应该去哪里?

我们还应该进一步解耦 Rx 回调吗?

我正在关注这篇文章 https://davidguerrerodiaz.wordpress.com/2015/10/13/a-brief-introduction-to-a-cleaner-android-architecture-the-mvp-pattern/

还有这个来自 antonioleiva.com 的单独 github 存储库 https://github.com/antoniolg/androidmvp

【问题讨论】:

  • 我在 Rx 和 Retrofit 方面没有任何经验,但它们似乎最好住在 M 中。将 P 和 V 视为一种与用户交互的“附加组件”,因此他们的责任只是通知用户并听取交互。简而言之,P 和 V 中没有业务逻辑。还可以将您的 M 视为通往外部代码库的“敞开大门”,可以在其他地方重复使用,比如在非用户交互应用程序(例如系统服务)甚至其他环境(如 GWT)中。这会通过不同层的接口带来一定的复杂性,但这会使您的系统松散耦合。

标签: android design-patterns mvp rx-java rx-android


【解决方案1】:

正如您所指出的,RxJava 功能定义了模型层的用例,因此它将被放置在该层的交互器中。您可以为每个用例创建不同的交互器。假设您正在从服务器中提取用户列表,这将是一个用例和一个具有 RxJava/Retrofit Observable 的交互器。

然后你会有一个带有 Observer 的 Presenter,它对这个用户列表感兴趣,所以它会订阅那个 Observable。

最后,当这个 Observer 拥有来自 Observable 的所有数据(onCompleted)时,它会转换这些数据(如果需要的话)并传递给只负责显示它的 View。

【讨论】:

    【解决方案2】:

    有一篇很棒的帖子解释了 mvp。 Rx 只是它的附加工具。

    http://hannesdorfmann.com/android/mosby-playbook/

    有深入的解释和源代码的例子。

    【讨论】:

    • 链接有问题:404...找不到页面。
    • 是的,他们不知何故删除了这篇很棒的文章
    • 我打开没有问题
    • 不是很好的最佳实践示例,演示者和演示者的两个方向参考视图带有一些可怕的超重和内置的'showError','showLogin'让它变得混乱。
    猜你喜欢
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 2020-08-14
    • 2018-03-29
    • 2019-04-04
    • 1970-01-01
    相关资源
    最近更新 更多