我在活动中调用以下代码,在主线程上执行webview中的一些JavaScript,然后我调用一个方法在回调中返回RxJava Single。
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(final WebView webView, String url) {
super.onPageFinished(webView, url);
webView.evaluateJavascript("someMethodCall()", new ValueCallback<String>() {
@Override
public void onReceiveValue(String retVal) {
String input = f(retVal);
Timber.d(TAG, "BEFORE doSomethingAndReturnSingle");
// reachable until here
helperClass
.doSomethingAndReturnSingle(input)
.observeOn(Schedulers.computation())
.subscribeOn(Schedulers.computation())
.doOnSuccess(new Action1<String>() {
@Override
public void call(String aesKey) {
Timber.d(TAG, "doOnSuccess");
}
})
.doOnError(new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
Timber.e(TAG, "error", throwable);
}
});
webView.loadUrl("file:///android_asset/mypage.html");
返回Single
的方法如下:
public Single<String> doSomethingAndReturnSingle(String input) {
// some operations on input
// this is still reachable
return Single.fromCallable(new Callable<String>() {
@Nullable
@Override
public String call() {
// this is never called
Timber.d(TAG, "fromCallable");
return "test";
}
});
}
我把日志和断点放在任何地方,但不知何故我无法通过单曲:doOnSuccess
,doOnError
都没有被调用,甚至更多: call
方法{ {1}}永远不会被称为!
我做错了什么?
我尝试了调试运行和正常运行,我检查了logcat中的日志,Single.fromCallable
永远不会被执行。