学习Android Architecture Blueprints(二)-rxjava 和 loader 分支

1. 前言

今天咱们继续,看下todo-mvp-rxjava分支与todo-mvp-loaders分支。rxjava分支引入了很火的rxjava。loaders分支引入了3.0就加入进来的Loader框架。

2. rxjava分支

不知道大家有没有用rxjava,rxjava用起来真的很不错,尤其是用rxandroid做线程调度的时候,配合上RxAndroid 全家桶,真的爽翻了。

虽然说rxjava的操作符有很多,不多我们平常开发用到的却不多,很多前辈都给我们总结了许多RxJava的应用场景。好了,废话就到这里,咱们来看看todo-mvp-rxjava分支的不同之处。

todo-mvp-rxjava 与todo-mvp的区别就在与Model层(Repository)的数据处理部分。

还是以TasksRepository#getTask 为例。代码如下。

这里写图片描述

mTasksRepository#getTask 返回一个Observable对象,并发射数据,在onNext和onComlpeted中调用View的接口去更新UI。那么我们来看下getTask的代码。

这里写图片描述

  • 从缓存中取数据,并用just操作符生成一个Observable对象
  • 分别从loacl 和remote数据源中返回一个Observable,然后用concat结合两个observable等等。

可以看到,这里就是用rxjava来操作。好,暂时就到这里了。

3. loaders

看下github上对应的架构图。

这里写图片描述

从图中可以看到,多出了Loader,这个从3.0引入的,用于在Activity或Fragment中异步加载数据。Loader Guide

仔细观察图中Loader相关的箭头可以看的出。

  • 我们可以通过Loader充当M 与VP之间的桥梁,通过Loader调用Repository去获取处理数据,也可以更新UI。

我们先观察TaskDetailPresenter构造函数的变化。需要注意的是,TaskDetailPresenter实现了LoaderManager.LoaderCallbacks接口。

这里写图片描述

多出了以下内容

  • Loader的实现 TaskLoader
  • LoaderManager

,在Fragment的onResume中,会调用Presenter的start方法。而在这个方法中,调用LoderManager的initLoader方法。然后会在TaskLoader的loadInBackground方法中进行加载数据。
这里写图片描述

而getTask方法就是获取数据的,这里就不在说了,然后就会调用LoaderCallbacks中的onLoadFinished方法,也就是Presenter中的onLoadFinished方法。
这里写图片描述

最后,更新UI。流程到这里就结束了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值