RxAndroid 来管理应用状态(1)

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

指令式编程现在总是被拿出来和其他 OOP 呀 、FP 还是响应式编程进行对比以突出后者的优势。不过指令式编程还是比较好理解的,不过前提是你的应用足够简单,一切都在可控的范围内。这样你可以用同步的方式来写整个系统。不过当今的世界不是这样的,整个世界都是不确定的,当然变化背后可能是确定的。

因为这些种种的不确定性,为应付这些不确定性响应式编程显得至关重要。我们实例还是从简单开始,通过简单来映射这个复杂的世界。定义一个 userManager 接口,提供设置用户姓名和年龄以及获取用户的一系列方法。这里实例我们并没有脱离实际。

然后通过 UserManager 可以获取用户对象来做一些事,判断用户状态。我们可以用 set 方法来更改用户属性。

获取数据来更新用户属性,数据的来源可能是文件也可能是通过对服务端的请求来获取数据。所以获取数据的过程以及是否能获取到数据都是不确定的。在没成功更新用户属性我们就急于打印或获取用户信息势必会出问题。都知道在 javascript 我们可以写 callback 来进行异步获取后更新用户信息。

在 Java 中我们通过匿名类实现 callback。runnable 开在其他线程发起请求获取数据。

同样我们也可以定义接口,提供 success 和 error 处理的方法来处理请求的状态。不过这样做下来,一两个属性还好,如果多了我们怎么处理。

通过定义接口我们可以实现对获取数据异步设置 user 的 name 属性,可以处理设置数据的成功和失败的情况。我们似乎找到了 solution。

这里定义两个属性,我们就需要

更糟糕的是如果我们获取数据是有先后,例如我们获取信息需要先获取用户 id ,也就是我们请求是有先后顺序的。这样层层嵌套不仅麻烦而是无法控制。尤其当我们状态改变了,更是无法控制了。例如当我们旋转手机,配置发生改变我们请求。

如果我们将两个异步设置属性组合在一起,这样就是超出我们控制。如果系统这样复杂下去,code 就像脱缰怪兽无法控制。

如果我们应用是跑在 Android 系统中,又增加问题的复杂性。我们获取用户信息后将其显示在android 界面,场景是我们更改用户名称,更改后发起请求更新服务端用户的属性,然后成功 update 用户信息后更新 android 界面的信息。

当请求返回时我们需要判断状态,是否我们已经离开这个 activity 或者选择了手机。

成功更新服务端的数据,请求是异步跑在非 UI 现成,返回后我们还需要返回 UI 线程更新界面。

在 Android 应用中我们还需在成功获取数据后切换回主线程,这一切一切的麻烦我都可以用 RxAndroid 来解决。

RxAndroid 来管理应用状态(2)

相关文章

  • RxAndroid 来管理应用状态(1)

    指令式编程现在总是被拿出来和其他OOP呀 、FP还是响应式编程进行对比以突出后者的优势。不过指令式编程还是比较好理...

  • RxAndroid 来管理应用状态(f)

    一个简单登录页面来诠释我们今天的内容 1. 点击subview按钮来发起请求, 2.随后我们通常做法就是禁用sub...

  • RxAndroid 来管理应用状态(2)

    我们的移动设备与服务端是异步的,发起请求后,就只有等待了,等待反馈,可能因为不稳定的网络,我们可能无法收到服务端的...

  • RxAndroid 来管理应用状态(3)

    解决方案就是响应式编程,我们用响应式编程方式重新审视我们的 code refact 我们的代码。这里我们引用 Rx...

  • RxAndroid 来管理应用状态(5)

    上一次分享我们引入 RxAndroid 将代码进行重构,看上去似乎合情合理不过还存在许多问题。今天我们用更直观的图...

  • vue.js 之 vuex(状态管理)

    1. 状态管理(vuex)简介 vuex是专为vue.js应用程序开发的状态管理模式。它采用集中存储管理应用的所有...

  • 13.vuex (实现数据共享)

    1.介绍vuex 被称为一种“状态管理模式”,这个状态管理应用包含一下部分:1.state 驱动应用的数据源(...

  • Cookie & Session

    1. 状态管理 1.1 为什么需要状态管理 WEB应用程序使用HTTP协议通信,而HTTP协议是“无状态”协议,即...

  • 如何在kubernetes中开发自己的Operator

    1.为什么要用operator kubernetes对管理无状态的应用有很好的优势,但对于有状态应用,kubern...

  • Web前端—vue面试题(一)

    1,对于Vue了解多少,什么是Vuex,VueRouter vuex为状态管理,它集中存储管理应用的所有组件的状态...

网友评论

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

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