JavescriptInterface和线程没有返回主线程

时间:2017-03-28 09:57:42

标签: javascript android multithreading webview

我正在为Android开发一个应用程序,其中一些内容通过WebView显示。

我有像这样的Javascript界面​​。

WebAppInterface(Context c, Response response) {
        activity = (Activity) c;
        delegate = response;
        context = c;
    }

    /** Show a toast from the web page */
    @JavascriptInterface
    public void getResponse(final String operation, final String response, final String type) {
        final Handler mainHandler = new Handler(context.getMainLooper());
        mainHandler.post(new Runnable() {
            @Override
            public void run() {
                delegate.didGetResponse(operation, response, type);
                Log.d("Success: ", "Im still here"); <-- why am I not back in main thread? 
            }
        });    
    }

    public interface Response {
        public void didGetResponse(String operation, String response, String type);
    }

我的活动实现了didGetResponse,并且有一个开关,可以执行代码并在需要时更新webview,但仅限于webview中的第一个功能,因此在设置页面后,webview不再响应&#34;点击&#34;

我正在思考它,因为线程仍在javascript接口中?

然而,原生按钮仍然可以更新webview。但我希望能够从webview中新加载的URL调用js函数

1 个答案:

答案 0 :(得分:2)

好的,所以我发现答案结果是我用一些参数调用了一个javascript函数。所以我的解决方案有效,问题是我的js函数在这个页面上只有2个参数而不是3个。这与swift的不同之处在于它只使用了2个参数。