腾讯面试 知乎,[译]使用 MVI 开发响应式 APP ,95%Android开发者已收藏的十大开源库

本文介绍了如何使用MVI模式和状态折叠器(state reducer)来开发复杂的Android应用,详细阐述了如何处理下拉刷新、加载更多等交互,通过实例展示了如何将业务逻辑与视图解耦,提高代码可维护性。
摘要由CSDN通过智能技术生成

使用 MVI 开发响应式 APP — 第三部分 — 状态折叠器(state reducer)

前面的系列里 我们已经讨论了如何用 Model-View-Intent 模式和单向数据流去实现一个简单的页面。在这篇博客里我们将要实现更加复杂页面,这个页面将有助于我们理解状态折叠器(state reducer)。

如果你没读第二部分,你应该先去读一下第二部分,然后再读这篇博客, 因为第二部分博客描述我们如何将业务逻辑通过 Presenter 与 View 进行沟通,如果让数据进行单向流动。

现在我们构建一个更加复杂的场景,像下面演示的内容:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如你所见,上面的演示内容,就是根据不同的类型显示商品列表。这个 APP 中每个类型只显示三个项,用户可以点击加载更多,来加载更多的商品(http请求)。另外,用户可以使用下拉刷新去更新不同类型下的商品,并且,当用户加载到最底端的时候,可以加载更多类型的商品(加载下一页的商品)。当然,当出现异常的时候,所有的这些动作执行过程与正常加载时候类似,只不过显示的内容不同(例如:显示网络错误)。

让我们一步一步实现这个页面。第一步定义View的接口。

public interface HomeView {

/**

  • 加载首页意图
  • @return 发射的值可以被忽略,无论true或者false都没有其他任何不一样的意义
    */
    public Observable loadFirstPageIntent();

/**

  • 加载下一页意图
  • @return 发射的值可以被忽略,无论true或者false都没有其他任何不一样的意义
    */
    public Observable loadNextPageIntent();

/**

  • 下拉刷新意图
  • @return 发射的值可以被忽略,无论true或者false都没有其他任何不一样的意义
    */
    public Observable pullToRefreshIntent();

/**

  • 上拉加载更多意图
  • @return 返回类别的可观察对象
    */
    public Observable loadAllProductsFromCategoryIntent();

/**

  • 渲染
    */
    public void render(HomeViewState viewState);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值