从不调用Single.fromCallable#调用

时间:2017-07-04 15:40:31

标签: android rx-java

我在活动中调用以下代码,在主线程上执行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";
        }
    });
}

我把日志和断点放在任何地方,但不知何故我无法通过单曲:doOnSuccessdoOnError都没有被调用,甚至更多: call方法{ {1}}永远不会被称为

我做错了什么?

我尝试了调试运行和正常运行,我检查了logcat中的日志,Single.fromCallable永远不会被执行。

0 个答案:

没有答案