【问题标题】:Where are the big UseCases to need RXJava in AndroidAndroid 中需要 RXJava 的大用例在哪里?
【发布时间】:2018-02-21 04:34:21
【问题描述】:

这更多是一个架构问题,也可能是一个观点问题。

许多 Android 库在 API 中都有反应式方法。例如Volley , Volley 有一个很好的JsonObjectRequest 将其放入RequestQueue 并在回调onResponse 中处理响应。

或者在Picasso 中,您也有一个异步调用,只在给定的 ImageView 中加载图片。

在适用于 Android 的新 Persistent Tool ObjectBox 中,您还可以通过反应式方法设置和查询数据库中的数据。

所以我的问题是,RXJava 在 Android 中的巨大需求在哪里? RXJava 在哪些 UseCases 中必不可少?

【问题讨论】:

标签: android asynchronous android-volley rx-java2


【解决方案1】:

反应式与“观察者模式”不同。回调与响应式不同。自定义的回调接口更加具体,不像 RxJava 的响应式实现那样容易概括。

  1. RxJava 遵循observable contract,这意味着它的行为在自身内部是一致的,并且该行为很容易推广。
  2. RxJava 使用一组基本的运算符和 Java 泛型来提供非常丰富的自定义组合。众所周知,Observable<CustomJsonObject> 的行为方式与 Observable<Long> 相同。
  3. 给定 (1) 和 (2),您会发现可以组合反应式运算符来获得自定义行为。因此,customJsonObjectObservable.distinctUntilChanged() 的行为方式与longObservable.distinctUntilChanged() 相同。您无需创建自定义类来存储前一个项目以供比较,因为操作员会为您处理。
  4. 引入时间流逝或多线程是使用运算符完成的,这些方面也是可组合的。 interval() 运算符提供定期更新,buffer() 运算符收集在一段时间内到达的数据,timeout() 运算符监视数据并在某个时间段内不存在时通知。

第 (4) 点可能是 RxJava 最大的胜利。推理时间的流逝,尤其是在存在多个控制线程的情况下,非常困难。 RxJava 可以控制这些困难的领域。难题并没有那么难解决,非常困难的问题通常可以分解为更容易解决的领域。

Volley 没有解决难题。它提供异步响应,并且只解决了上述第 (1) 项的一小部分。它不涉及 (2)、(3) 或 (4)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 2015-08-24
    • 2016-10-09
    • 1970-01-01
    • 2017-09-26
    • 2012-11-18
    • 2018-04-15
    相关资源
    最近更新 更多