rxjava 嵌套网络访问出现空指针
项目中需要通过ocr来识别图中的文字,引用了第三方的ocr库,但是在rxjava的嵌套中出了问题,代码贴出来关键部分
Disposable disposable = Observable.just(OCR())
.observeOn(AndroidSchedulers.MainThread())
.subscribeOn(schedulers.newThread())
.flatMap(new Function<Rsult,ItemsBean>(){
............此处省略
})
.subscribe(new Consumer(){
............此处省略
})
其中ocr方法本身是网络访问并且返回Request实例,大概贴出ocr方法的代码
public static Result OCR(){
ImageClient imageClient = new ImageClient();
String result = imageClient.OCR(**,**,**);//这个方法是网络访问
Result resultEntity = gson.fromJson(result);
return resultEntity;
}
运行后发现flatMap中获取到的result实例是空的,之后改变了部分代码,改成了大概这样
Disposable disposable = Observable.just(imageClient.OCR(**,**,**))
.observeOn(AndroidSchedulers.MainThread())
.subscribeOn(schedulers.newThread())
.map(new Function(){
............此处省略
})
.flatMap(new Function<Rsult,ItemsBean>(){
............此处省略
})
.subscribe(new Consumer(){
............此处省略
})
然后又报网络访问在主线程中,请问这是什么原因呢,怎么去做这种类似的网络访问嵌套和rxjava的组合啊。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
本身的数据有OCR方法而来,OCR方法是网络访问,just是将数据立即进行发送,这导致了数据为空和在主线程进行了网络访问的问题,解决办法如下:
即可解决问题
observeOn和subscribeOn顺序出了问题