RXJava可以帮助您进行线程处理,并将其转换为现有的反应性代码。
它使用flowable/observable/single来获取数据(例如,如果在流中有许多数据),它允许使用flowable进行反压。
它还允许您使用基本的反应性的东西,比如在不同的线程中有请求,然后您的观察。
这也意味着您可以将结果/请求作为反应流和映射/转换/...以及RxJava的任何可能。
1)首先,如果我对RXJava的理解有什么错误,请告诉我。
RxJava代表反应式开发。它使用一种基于函数式编程的通用“编码风格”。
2)当我们已经使用API查询使用referfit过滤数据时,对已经获得的数据进行操作有什么需要
因为它是一个拦截器,所以它将“现有”数据转换为反应流。它对已经获得的数据进行操作。至少在这种情况下。
例如(Kotlin):
var service = Retrofit.Builder()
.addCallAdapterFactory(RxJava2CallAdapterFactory.createWithScheduler(Schedulers.newThread()))
.addCallAdapterFactory(ObserveOnMainCallAdapterFactory(AndroidSchedulers.mainThread()))
.addConverterFactory(GsonConverterFactory.create(GsonUtil.gson()))
.client(okHttpClient)
.baseUrl(host!!)
.build()
.create(YourService::class.java)
service.getLotsOfData()
.flatMapIterable{ it }
.flatMap{ it.id = id+"whatEverModified" }
.subscribeOn(Schedulers.io)
.observeOn(AndroidSchedulers.mainThread())
interface YourService { @GET("lots/of/data") fun getLotsOfData(): Flowable<CustomModel> }
示例(Java):
YourService service = Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create(GsonUtil.gson()))
.client(okHttpClient)
.baseUrl(host)
.build()
.create(YourService.class);
service.getLotsOfData()
.flatMapIterable(data -> data)
.flatMap( data -> { data = data +"whatEverModified"; return data; })
.subscribeOn(Schedulers.io)
.observeOn(AndroidSchedulers.mainThread());
interface YourService { @GET("lots/of/data") Flowable<CustomModel> getLotsOfData(); }
这段代码获取您的数据列表,可以通过每个项迭代,将“WhateverModified”附加到模型中的每个id上,并在IO线程中完成所有工作。在修改和获取所有数据之后,它返回主线程中的数据。订阅=处理数据,观察=消耗数据。
在网络请求中使用和有什么好处。我见过许多使用的示例,但我想明白为什么。 示例情形: 为每个工作单元创建一个新线程。将使用线程池 但这种争论对应用程序有什么影响呢?还有哪些方面?
如何使用RxJava和Kotlin中的改型创建api调用的泛型类? 我的JAVA实现是:: 首先添加Gradle依赖项:(更新到最新版本(如果可用)) //用于改装 实现“com.squareup.reverfit2:reverfit:2.3.0” 实现“com.squareup.reverfit2:converter-gson:2.3.0” //对于拦截器实现“com.squareup.okht
我试图使用RxJava和Rome的改型,在你建议使用组件拱之前(在这个机会是不可能的,项目是在和50%和只需要继续与拱清理)。 所以问题是这个。我有一个返回POJO的web服务。类似于这样: null 相互作用者 回调 演示文稿 演示者 查看
现在,我使用subject来捕获。subscribe()上的错误,如下所示 在一些电话中 然后,在我的主要活动中,我订阅该行为主题并解析错误
我正在尝试使用Rxjava解决一个经典的文件验证过程。我有一个带有正常标头的CSV文件和另一个标头列表,我需要验证它们是否属于所选数据类型或值是否为空。 我已经用普通java实现了这一点,但我想让我的验证代码更具反应性。这就是我到目前为止所取得的成就。 在这里,我有3个可观察对象要组合和验证,在验证失败的第一个实例(行)中。 以下是我想使用的示例数据: 标题: 名字|姓|性别|出生|出生|出生|出
我只是从改型和RXJava开始。我有一个api调用,它上传一个文件并返回一个http响应,该响应的主体为空,状态为200(以防everythign工作正常)。我把它翻译成: 第二步,在我弄清楚如何映射到改型的请求是链多文件上传。我该怎么做? 也欢迎链接到使用RXJava+Retrifit的高级教程或示例。