-
-
Notifications
You must be signed in to change notification settings - Fork 459
指定请求、回调线程
liujingxing edited this page Sep 14, 2020
·
9 revisions
RxHttp默认在IO线程执行请求,也默认在IO线程回调,通过以下操作,我们可以指定请求和回调所在线程。
使用setSync
操作符将异步请求改为同步,如下:
RxHttp.get("/service/...")
.setSync() //同步请求
.asString()
.subscribe(s -> { //同步请求,在当前线程回调
//成功回调
}, throwable -> {
//异常回调
});
指定回调所在线程,使用RxJava的线程调度器,如下:
//指定回调所在线程,需要在第二部曲后调用
RxHttp.get("/service/...")
.asString()
.observeOn(AndroidSchedulers.mainThread()) //指定在主线程回调
.subscribe(s -> { //s为String类型,主线程回调
//成功回调
}, throwable -> {
//异常回调
});
亦或者使用Rxlife
指定回调线程,如下:
//当前环境为FragmentActivity/Fragment/View
RxHttp.get("/service/...")
.asString()
.to(RxLife.toMain(this)) //指定在主线程回调,并且在页面销毁时,自动关闭请求
.subscribe(s -> { //s为String类型,主线程回调
//成功回调
}, throwable -> {
//异常回调
});
注意:以上.to(RxLife.toMain(this))
是RxJava3的用法,RxJava2请使用.ad(RxLife.asOnMain(this))
替代