解决WebView使用loadUrl回调javascript方法时报错的问题

编程知识 行业动态 更新时间:2024-06-13 00:17:48

如果在Android中有如下方法定义:
@JavascriptInterface
public void inferenceImage() {
  webView.loadUrl("javascript:recognitionResult()");
}
当该方法被javascript函数调用,而该方法中又回调了另一个javascript函数,此时可能会报错,错误信息如下:
W/System.err: 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) {f0124b2} called on Looper (JavaBridge, tid 3538) {e19e0b1}, FYI main Looper is Looper (main, tid 1) {f0124b2})

解决方法有如下2种:
方法1:
@JavascriptInterface
public void inferenceImage() {
  webView.post(new Runnable() {
    @Override
    public void run() {
      webView.loadUrl("javascript:recognitionResult()");
    }
  });
}
方法2:
@JavascriptInterface
public void inferenceImage() {
  runOnUiThread(new Runnable() {
    @Override
    public void run() {
      webView.loadUrl("javascript:recognitionResult()");
    }
  });
}
 

更多推荐

解决WebView使用loadUrl回调javascript方法时报错的问题

本文发布于:2023-03-25 20:01:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/c857202917a38438d2c4c8d14a817bb2.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:回调   时报   方法   WebView   loadUrl

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!