android多线程干扰,android – RxJava的.debounce()干扰了我的Observable的线程和错误处理...

我想在我的

Android应用程序中进行标准搜索,我在其中键入EditText,等待用户完成输入,然后使用Retrofit启动网络请求:

// make observable out of EditText

Observable textObs = WidgetObservable.text(searchText);

mSearchResultSubscription =

textObs

// wait until user has not typed for 350 milliseconds

.debounce(350, TimeUnit.MILLISECONDS)

// get the string the user typed

.map(OnTextChangeEvent::text)

.map(CharSequence::toString)

// start a new observable (from Retrofit)

.flatMap(

q ->

// try network call and return my data

MyRetrofitAPI.getService().search(q)

// if this fails, just return empty observable

.onErrorResumeNext(error -> {

Log.e("Error from retrofit: " + error.getLocalizedMessage());

return Observable.empty();

})

)

// if all is well, show the contents on the screen somehow

.observeOn(AndroidSchedulers.mainThread())

.subscribe(a -> {

mAdapter.setItems(a);

}

, error -> {

Log.e("Also error in outer observable: " + error.getLocalizedMessage());

}

);

现在,我有一个测试服务器,它接受改进调用并返回一个列表.当我输入’crash’时,服务器执行一些无效的代码和错误,返回http状态代码500,以及一些错误html.因此,改装调用失败了.

但是,外部Observable也有错误,导致链终止.错误是:

当前线程必须有一个弯针!

奇怪.现在我尝试没有.debounce()并且同样的事情发生,服务器有一个内部错误,但外部Observable没有错误.

那么.debounce()它对导致这种行为的线程有什么影响呢?我该如何解决它?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值