WebView使RxJava在任务结束前完成

WebView使RxJava在任务结束前完成,java,android,webview,rx-java,Java,Android,Webview,Rx Java,我有一系列涉及网络操作和数据库操作的函数,这些操作无法在主线程上完成,因此我决定使用RxJava作为解决方案。RxJava的工作原理完全符合预期 最近,我插入了另一个函数,它使用WebView作为web爬虫程序,一旦加载了页面,就应该依次调用其余的网络和DB函数 问题是WebView的onPageFinished在另一个线程上被调用,这导致我的RxJava在下一次调用之前完成,因此没有调用其余的函数 这是RxJava代码,用于调用WebView所在的函数: compositeDisposable

我有一系列涉及网络操作和数据库操作的函数,这些操作无法在主线程上完成,因此我决定使用RxJava作为解决方案。RxJava的工作原理完全符合预期

最近,我插入了另一个函数,它使用WebView作为web爬虫程序,一旦加载了页面,就应该依次调用其余的网络和DB函数

问题是WebView的onPageFinished在另一个线程上被调用,这导致我的RxJava在下一次调用之前完成,因此没有调用其余的函数

这是RxJava代码,用于调用WebView所在的函数:

compositeDisposable.add(可完成
.fromAction(此::webViewFunction)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribowith(新的可处置CompletableObserver(){
@凌驾
未完成的公共空间(){
...
}
@凌驾
公共无效申报人(可丢弃的e){
...
}
}));
这是WebView代码:

myWebView.post(新的Runnable(){
@凌驾
公开募捐{
myWebView.setWebViewClient(新的WebViewClient(){
@凌驾
公共void onPageFinished(WebView视图,字符串url){
super.onPageFinished(视图、url);
view.evaluateJavascript(((function(){return window.document.body.outerHTML})();”,
新的ValueCallback(){
@凌驾
公共void onReceiveValue(字符串html){
nextFunction(html);
}
});
}
});
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.loadUrl(“https://web.url.com");
}
});