异常A WebView method was called on thread 'JavaBridge'. All WebView methods must be called on the same

港控/mmm° 2022-08-10 03:57 182阅读 0赞

在创建webview的另外一个地方调用webview加载网页,出现异常:

  1. 11-10 13:40:49.793: W/WebView(3684): 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) {52837448} called on Looper (JavaBridge, tid 250) {5289c660}, FYI main Looper is Looper (main, tid 1) {52837448})
  2. 11-10 13:40:49.793: W/WebView(3684): at android.webkit.WebView.checkThread(WebView.java:2072)
  3. 11-10 13:40:49.793: W/WebView(3684): at android.webkit.WebView.loadUrl(WebView.java:803)
  4. 11-10 13:40:49.793: W/WebView(3684): at com.leiting.sdk.channel.leiting.object.BaseObject.reload(BaseObject.java:251)
  5. 11-10 13:40:49.793: W/WebView(3684): at com.android.org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
  6. 11-10 13:40:49.793: W/WebView(3684): at com.android.org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:24)
  7. 11-10 13:40:49.793: W/WebView(3684): at android.os.Handler.dispatchMessage(Handler.java:102)
  8. 11-10 13:40:49.793: W/WebView(3684): at android.os.Looper.loop(Looper.java:136)
  9. 11-10 13:40:49.793: W/WebView(3684): at android.os.HandlerThread.run(HandlerThread.java:61)
  10. 11-10 13:40:51.377: W/System.err(3684): java.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) {52837448} called on Looper (JavaBridge, tid 250) {5289c660}, FYI main Looper is Looper (main, tid 1) {52837448})
  11. 11-10 13:40:51.381: W/System.err(3684): at android.webkit.WebView.checkThread(WebView.java:2082)
  12. 11-10 13:40:51.381: W/System.err(3684): at android.webkit.WebView.loadUrl(WebView.java:803)
  13. 11-10 13:40:51.381: W/System.err(3684): at com.leiting.sdk.channel.leiting.object.BaseObject.reload(BaseObject.java:251)
  14. 11-10 13:40:51.381: W/System.err(3684): at com.android.org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
  15. 11-10 13:40:51.381: W/System.err(3684): at com.android.org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:24)
  16. 11-10 13:40:51.381: W/System.err(3684): at android.os.Handler.dispatchMessage(Handler.java:102)
  17. 11-10 13:40:51.385: W/System.err(3684): at android.os.Looper.loop(Looper.java:136)
  18. 11-10 13:40:51.385: W/System.err(3684): at android.os.HandlerThread.run(HandlerThread.java:61)
  19. 11-10 13:40:51.385: W/System.err(3684): Caused by: 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) {52837448} called on Looper (JavaBridge, tid 250) {5289c660}, FYI main Looper is Looper (main, tid 1) {52837448})
  20. 11-10 13:40:51.385: W/System.err(3684): at android.webkit.WebView.checkThread(WebView.java:2072)
  21. 11-10 13:40:51.385: W/System.err(3684): ... 7 more
  22. 11-10 13:40:51.393: D/com.leiting.sdk(3684): mWebView WebChromeClientUncaught Error: Error calling method on NPObject.
  23. 11-10 13:40:51.393: I/chromium(3684): [INFO:CONSOLE(43)] "Uncaught Error: Error calling method on NPObject.", source: file:///android_asset/html/error.html (43)

分析:根据log日志可以看到是两个使用webview的地方不在同一个线程。

解决方案:

在另外的一个线程中使用webview的方法如下:

  1. view.post(new Runnable() {
  2. @Override
  3. public void run() {
  4. view.loadUrl(reloadUrl);
  5. }
  6. });

发表评论

表情:
评论列表 (有 0 条评论,182人围观)

还没有评论,来说两句吧...

相关阅读