java.lang.RuntimeException: java.lang.Throwable: A WebView method was called on thread 'JavaBridge'.

来源:互联网 发布:excel表格数据合并计算 编辑:程序博客网 时间:2024/05/16 19:21

错误代码

FATAL EXCEPTION: JavaBridgeProcess: violetjack.smartinfusion, PID: 31227java.lang.RuntimeException: java.lang.Throwable: A WebView method was called on thread 'JavaBridge'. All WebView methods must be called on the same thread. (Expected Looper Looper (main, tid 1) {4186a978} called on Looper (JavaBridge, tid 385) {41a24830}, FYI main Looper is Looper (main, tid 1) {4186a978})at android.webkit.WebView.checkThread(WebView.java:2082)at android.webkit.WebView.loadUrl(WebView.java:803)...

错误原因

由于我在webview加载页面时是这么写的

private void callChangeStartTime(final String time){    String call = "javascript:changeStartTime(\"" + time + "\")";    wvContent.loadUrl(call);}

一开始在4.2的机器上没有这个问题,到4.4的机器上就出了这个问题。

解决方案

在Stackoverflow上找到了正解http://stackoverflow.com/questions/22607657/webview-methods-on-same-thread-error

runOnUiThread(new Runnable() {    @Override    public void run() {        final WebView webView = (WebView) findViewById(R.id.map);        webView.loadDataWithBaseURL(...);    }});

就是将webview的loadUrl方法写在runOnUiThread中即可解决问题。就如我做的那样~

private void callChangeStartTime(final String time){    runOnUiThread(new Runnable() {        @Override        public void run() {            String call = "javascript:changeStartTime(\"" + time + "\")";            wvContent.loadUrl(call);        }    });}
1 0
原创粉丝点击