rxjava 嵌套网络访问出现空指针

发布于 2022-09-07 21:22:23 字数 1532 浏览 35 评论 0

项目中需要通过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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

枯寂 2022-09-14 21:22:23

本身的数据有OCR方法而来,OCR方法是网络访问,just是将数据立即进行发送,这导致了数据为空和在主线程进行了网络访问的问题,解决办法如下:

Disposable disposable = Observable.fromCallable(
            @Override
                public Object call(){
                    return .....
                })
                        .observeOn(AndroidSchedulers.MainThread())
                        .subscribeOn(schedulers.newThread())
                        .flatMap(new Function<Rsult,ItemsBean>(){
                            ............此处省略
                        })
                        .subscribe(new Consumer(){
                            ............此处省略
                        })

即可解决问题

猫瑾少女 2022-09-14 21:22:23

observeOn和subscribeOn顺序出了问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文