当人们试图说服我使用RxJava而不是Android的标准AsyncTask
构造时,我遇到了几个实例。
我认为RxJava提供了更多的功能,但相对而言却失去了简单性AsyncTask
。
有没有比第一种方法更适合一种方法的用例,或者甚至可以认为RxJava更通用?
当您在Java
8上使用RxJava的全部功能时,可以看到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后端的后端风格还多。
我知道这个问题已经被问过很多次了。但是有些事情我从来没有找到答案。所以希望有人能给我一些启发。 我们都知道,AsyncTask和Thread是执行后台任务以避免ANR问题的选项。建议asynctask只能用于短期运行的任务,而线程可以用于长期运行的任务。asynctask不应用于长任务的原因是众所周知的,这与asynctask可能导致的泄漏有关,因为它可能在活动销毁后继续运行。这很有说服力。然而,
使用RxJava.Observable取代AsyncTask和AsyncTaskLoader > 原文链接 : Replace AsyncTask and AsyncTaskLoader with rx.Observable – RxJava Android Patterns 译者 : ZhaoKaiQiang 校对者: chaossss 状态 : 校对完成 在网上有很多关于RxJava入门指南的
RxJava中是否有与RxAndroid中的AndroidSchedulers.mainThread()同义的Scheduler api。因此,如果我在一个新线程上安排一个任务,并且我想在Java主线程上观察它,我将如何做到这一点? 下面的edit是一个RxSubscription示例,带有system。在注释中,主线程被终止,而可观察线程被终止。interval在单独的线程上运行。在Androi
本文向大家介绍Android AsyncTask用法巧用实例代码,包括了Android AsyncTask用法巧用实例代码的使用技巧和注意事项,需要的朋友参考一下 Android AsyncTask 联系人导入 联系人删除 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
我对RxJava/RxAndroid还不熟悉,但我一直坚持使用我的用例。 我尝试迭代一个