您的位置:首页 > 移动开发

Cause by:All WebView methods must be called on the same thread[问题已解决]

2015-11-03 17:52 633 查看
最近在打Android6.0系统适配的包时,出现了以下的问题:

问题: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)
{425f48a8} called on Looper (JavaBridge, tid 92104) {426508d0}, FYI main Looper is Looper (main, tid 1) {425f48a8})

经过多方查证,发现问题的所在是:当webview 与js交互时,在js调用后的Java回调线程并不是主线程。导致了程序出现崩溃或提示”程序无法运行“,解决此类异常,将webview操作放在主线程中即可。所以找到自己出错的地方:

public void loadUrl(final
String url) {
mClientToWebView.webview.loadUrl(url);
}

修改为:

public void loadUrl(final
String url) {
//修改无响应及点击回退或关闭按钮,页面崩溃的问题:mClientToWebView.webview.post(new Runnable() 
mClientToWebView.webview.post(new Runnable() {
   @Override
   public void run() {
    mClientToWebView.webview.loadUrl(url);
   }
});
}

这样,问题就解决啦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息