rxjava

时间:2018-08-20 10:22:29

标签: android rx-java2

我从OCR收到消息,并这样通过rxjava发布。

Disposable disposable = Observable.just(OCR())
                    .observeOn(AndroidSchedulers.MainThread())
                    .subscribeOn(schedulers.newThread())
                    .flatMap(new Function<Rsult,ItemsBean>(){
                        ............
                    })
                    .subscribe(new Consumer(){
                        ............
                    })

OCR()本身从服务器获取消息,返回类型是一个实体,在此处编码

public static Result OCR(){
ImageClient imageClient = new ImageClient();
String result = imageClient.OCR(**,**,**);//network
Result resultEntity = gson.fromJson(result);
return resultEntity;

}

但是它为null,所以我尝试使用它,代码:

Disposable disposable = Observable.just(imageClient.OCR(**,**,**))
                    .observeOn(AndroidSchedulers.MainThread())
                    .subscribeOn(schedulers.newThread())
                    .map(new Function(){
                        ............此处省略
                    })
                    .flatMap(new Function<Rsult,ItemsBean>(){
                        ............此处省略
                    })
                    .subscribe(new Consumer(){
                        ............此处省略
                    })

并在mainThread异常中抛出网络,谢谢。我想知道使用它的正确方法是什么。

1 个答案:

答案 0 :(得分:1)

使用Observable.just将在传递参数时执行该参数。并且由于imageClient.OCR(**,**,**)拨打了网络电话。您正在得到例外。

为防止这种情况,您必须包围执行程序,然后订阅:

一种实现方法是:

Observable.fromCallable { imageClient.OCR(**,**,**) }

另请参阅Creating Observables doc