qan*_*tik 11 java concurrency android android-asynctask rx-java
当人们试图说服我使用RxJava而不是Android的标准AsyncTask构造时,我遇到了几个实例.
在我看来,RxJava提供了更多的功能,但在简单性方面却有所损失AsyncTask.
是否有任何用例比另一种方法更适合一种方法,甚至更普遍的RxJava甚至可以被认为是优越的?
Tas*_*kos 16
当您在Java 8上使用它时,可以看到RxJava的全部功能,最好使用像Retrofit这样的库.它允许您轻松地将操作链接在一起,完全控制错误处理.例如,请考虑以下代码id:指定顺序的int和apiClient:订单管理微服务的Retrofit客户端:
apiClient
.getOrder(id)
.subscribeOn(Schedulers.io())
.flatMapIterable(Order::getLineItems)
.flatMap(lineItem ->
    apiClient.getProduct(lineItem.getProductId())
             .subscribeOn(Schedulers.io())
             .map(product -> product.getCurrentPrice() * lineItem.getCount()),
    5)
.reduce((a,b)->a+b)
.retryWhen((e, count) -> count<2 && (e instanceof RetrofitError))
.onErrorReturn(e -> -1)
.subscribe(System.out::println);
这将异步计算订单的总价,具有以下属性:
此外,IMO .subscribeOn(Schedulers.io())在每次网络调用之后应该是隐式的 - 您可以通过修改创建Retrofit客户端的方式来实现.对于11 + 2行代码来说也不错,即使它比Android-ish更加后端.
| 归档时间: | 
 | 
| 查看次数: | 5907 次 | 
| 最近记录: |