RxJava和Bolts有什么区别?

时间:2016-07-18 16:33:40

标签: android rx-java bolts-framework

我已经对此进行了研究,我知道RXJava正在使用可观察模式,而Bolts依赖于执行者。什么框架对处理需要按顺序完成的任务有好处?

我听说过使用singleExecutors,队列,链接asynctasks和这两个框架。我见过更多人使用螺栓和rxjava,但我很想知道两者之间的人们经历。

谢谢!

3 个答案:

答案 0 :(得分:17)

我已经在不同的项目中使用过,并且已经完成了从Bolts到RxJava的迁移。你问题的简单答案

  

哪个框架对处理需要按顺序完成的任务有好处?

是否可以轻松使用任一框架来执行此操作。他们俩都:

  • 允许任务一个接一个地链接
  • 启用为每个任务指定执行程序
  • 允许在方便的时间捕获和处理错误

然而,这就是螺栓功能结束的地方,而RxJava只是继续给予。 RxJava的真正力量在于它的运算符,其中包括允许你转换,组合和运算。过滤数据。

两个框架的学习曲线都很陡峭,RxJava更陡峭......但它的功能要强大得多。

另外,两个库的方法计数是

RxJava - 4605
Bolts  - 479

答案 1 :(得分:9)

Jahnold给出了很好的概述,我只是想补充一点信息:

首先,Bolts和RxJava都是Microsoft异步编程模型的Java实现:Bolts =任务并行化库和RxJava = Reactive Extensions。它们还允许非常容易地进行链接和线程切换(背景< - >主线程)。

将Bolts / TPL与RxJava / Rx进行比较的最佳方法是Bolts用于异步单值(promises),RxJava用于异步值列表(流)。

  • 因此,Bolts适用于返回单个值的后台工作,例如一般网络请求,从磁盘读取文件等等。
  • RxJava对于返回多个值的东西很有用,例如 订阅GPS坐标,onClick事件等

所以为了更好地回答你的问题:

  

哪个框架对处理需要按顺序完成的任务有好处?

我不得不问另一个问题:您打算将您的工作单个结果还是多个结果?

答案 2 :(得分:1)

这两个库解决了两个不同的问题。

<强>螺栓

Bolts通过透明地将代码推送到后台线程来简化异步编程。 Bolts还花费了大量精力试图减少产生嵌套金字塔格式的难看的代码嵌套。

因此,如果您特别希望处理异步(多线程)问题,那么Bolts就是更强大的解决方案。 Bolts在缓解代码嵌套和回调样板方面也很有效,对于试图缓解回调问题可能是一个很好的解决方案。

<强> RxJava

RxJava专门用于支持反应式编程范例。反应式编程是Java中命令式编程的替代方案。您可能会出于各种原因选择转向反应式编程范例 - 其中有很多原因。如果要将代码迁移到反应式编程模型,或者希望在绿地项目中使用被动,请考虑使用RxJava - Java世界中事实上的反应标准。

Reactive也解决了异步编程问题,并通过泛型减少了回调样板。但它不应仅用于解决这些问题。例如,Bolts解决嵌套金字塔代码结构的能力使其成为异步编程的更可行的解决方案。另一方面,如果你通过RxJava使用被动反应,异步问题已经解决了,所以没有必要引入螺栓。