RxAndroid 来管理应用状态(3)

作者: zidea | 来源:发表于2019-01-05 14:23 被阅读3次

    解决方案就是响应式编程,我们用响应式编程方式重新审视我们的 code refact 我们的代码。这里我们引用 RxAndroid 这个库来帮助我们解决一切的异步问题。我们来基于 RxAndroid 来实现响应式编程。

    getUser 不在返回 User 对象,而是返回一个包裹了 User 的可观察者的对象。当 User 对象发生变化时我们就能第一时间接受更新消息。便于我们获取最新版的 User 对象。将 setName 和 setAge 返回一个 Completable 对象,也就是我们每次更新服务端的用户 name 和 age 时都会通过这个返回 Completable 得到是否成功,以及什时候成功的信息。 

    getUser 返回一个可观察对象,我们就可以在 UI 线程上观察他的动向。以便来及时更新界面。

    然后通过 subscribeWith 来处理返回的 User 的对象,这里如果 RxAndroid 一些语法还不是很了解,我的理解就是subscribeWith中会把方法参数返回回去接收的是ResourceSubscriber,而ResourceSubscriber实现了Disposable接口所以,一般subscribeWith用到使用Rx请求接口的这种情况,订阅后把请求参数返回回去,可以添加到CompositeDisposable中方便绑定Activity生命周期取消。如果这里用 subscribe 而不是 subscribeWith 我们需要处理返回值 Disposable disposable = um.getUser... 然后在回收这个返回的 disposal 对象。

    再看一看 setName 方法在更新后如何使用,我们需要访问远端服务器,为了不阻止主线程我们需要另起线程,对于线程处理和线程间通讯 RxAndroid 给我们提供全新的解决方案。

    让后我们再回到主线程,处理返回的结果。

    从这一点我们开始获取用户。

    声明线程

    容易处理错误信息

    制定回调

    与生命周期相关

    1. 开始更新用户属性

    2. 声明一个线程,让我们请求脱离主线程

    3. 可以轻松处理请求的错误信息

    4. 多个异步组合使用也相对简单。

    5. 发起异步可以随时取消,可以和我们 Android 

    相关文章

      网友评论

        本文标题:RxAndroid 来管理应用状态(3)

        本文链接:https://www.haomeiwen.com/subject/qaicrqtx.html