在Android中需要RXJava的大型UseCases在哪里?

时间:2017-09-12 16:05:29

标签: android asynchronous android-volley rx-java2

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

许多Android库在API中都有被动方法。例如Volley ,Volley有一个很好的JsonObjectRequest可以将它放入RequestQueue,而回调onResponse则可以处理响应。

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

在适用于Android的新持久工具ObjectBox中,您还可以采用被动方法来设置和查询数据库中的数据。

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

1 个答案:

答案 0 :(得分:1)

Reactive与"观察者模式"不同。回电与被动不一样。定制的回调接口更加具体,并不像RxJava的反应式实现那样易于概括。

  1. RxJava遵循observable contract,意味着它的行为本身是一致的,并且这种行为很容易推广。
  2. RxJava使用一组带有Java泛型的基本运算符来提供非常丰富的自定义组合。已知Observable<CustomJsonObject>的行为方式与Observable<Long>相同。
  3. 鉴于(1)和(2),您会发现可以组成反应运算符以获得自定义行为。因此,customJsonObjectObservable.distinctUntilChanged()的行为方式与longObservable.distinctUntilChanged()相同。您不需要创建一个存储上一个项目的自定义类进行比较,因为操作员会为您处理。
  4. 使用运算符来介绍时间或多个线程,并且这些方面也是可组合的。 interval()运算符提供定期更新,buffer()运算符收集在一段时间内到达的数据,timeout()运算符监视数据并在一段时间内不存在时通知。
  5. Point(4)可能是RxJava的最大胜利。关于时间流逝的推理,特别是在存在多个控制线的情况下,是非常困难的。 RxJava将这些困难区域置于控制之下。困难问题并不是很难解决,而且很难将问题分解成更容易解决的问题。

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