Android WebView 的方法只能在 UI 线程中运行

Android,WebView,线程

2018.04.25

根据报错信息,Android 的 WebView 所有的方法都只能在 UI 线程中调用,在非 UI 线程调用都会产生一些意外的崩溃。

今天分析收集到的崩溃日志,看到一下的一些日志信息。发生的机型主要集中在 4.3 的机型中。很奇怪在更高的版本中,并没有发现这样的问题。记录一下,以备后续观察。

通过日志可以看出,所有的 WebView 方法都只能在 UI 线程中被调用。

java.lang.RuntimeException: java.lang.Throwable: Warning: A WebView method was called on thread 'WebViewCoreThread'. All WebView methods must be called on the UI thread. Future versions of WebView may not support use on other threads.

at android.webkit.WebView.checkThread(WebView.java:2093)

at android.webkit.WebView.loadUrl(WebView.java:836)

at com.binkery.android.utils.webviewbridge.Bridge.executeJavascript(Bridge.java:260)

at com.binkery.android.utils.webviewbridge.Bridge.executeJavascript(Bridge.java:229)

at com.binkery.android.utils.webviewbridge.Bridge.dispatchMessage(Bridge.java:113)

at com.binkery.android.utils.webviewbridge.Bridge.queueMessage(Bridge.java:100)

at com.binkery.android.utils.webviewbridge.Bridge.access$300(Bridge.java:25)

at com.binkery.android.utils.webviewbridge.Bridge$2.callback(Bridge.java:202)

at com.binkery.android.webview.AbsMethod.doResponse(AbsMethod.java:48)

at com.binkery.android.webview.methods.MethodVolunteer.downResponse(MethodVolunteer.java:43)

at com.binkery.my.volunteer.DownQRSaveUtil$1.handleMessage(DownQRSaveUtil.java:35)

at android.os.Handler.dispatchMessage(Handler.java:99)

at android.os.Looper.loop(Looper.java:137)

at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:1092)

at java.lang.Thread.run(Thread.java:841)

Caused by: java.lang.Throwable: Warning: A WebView method was called on thread 'WebViewCoreThread'. All WebView methods must be called on the UI thread. Future versions of WebView may not support use on other threads.

at android.webkit.WebView.checkThread(WebView.java:2084)

... 14 more

java.lang.Throwable: Warning: A WebView method was called on thread 'WebViewCoreThread'. All WebView methods must be called on the UI thread. Future versions of WebView may not support use on other threads.

at android.webkit.WebView.checkThread(WebView.java:2084)

at android.webkit.WebView.loadUrl(WebView.java:836)

at com.binkery.android.utils.webviewbridge.Bridge.executeJavascript(Bridge.java:260)

at com.binkery.android.utils.webviewbridge.Bridge.executeJavascript(Bridge.java:229)

at com.binkery.android.utils.webviewbridge.Bridge.dispatchMessage(Bridge.java:113)

at com.binkery.android.utils.webviewbridge.Bridge.queueMessage(Bridge.java:100)

at com.binkery.android.utils.webviewbridge.Bridge.access$300(Bridge.java:25)

at com.binkery.android.utils.webviewbridge.Bridge$2.callback(Bridge.java:202)

at com.binkery.android.webview.AbsMethod.doResponse(AbsMethod.java:48)

at com.binkery.android.webview.methods.MethodVolunteer.downResponse(MethodVolunteer.java:43)

at com.binkery..DownQRSaveUtil$1.handleMessage(DownQRSaveUtil.java:35)

at android.os.Handler.dispatchMessage(Handler.java:99)

at android.os.Looper.loop(Looper.java:137)

at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:1092)

at java.lang.Thread.run(Thread.java:841)

相关文章

- EOF -

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。

转载请注明:文章转载自 Binkery 技术博客 [https://binkery.com]

本文标题: Android WebView 的方法只能在 UI 线程中运行

本文地址:https://binkery.com/archives/112002.html

java 动态代理 阿bin_Android WebView 的方法只能在 UI 线程中运行相关推荐

  1. Java动态代理的两种实现方法:JDK动态代理和CGLIB动态代理

    Java动态代理的两种实现方法:JDK动态代理和CGLIB动态代理 代理模式 JDK动态代理 CGLIB动态代理 代理模式 代理模式是23种设计模式的一种,指一个对象A通过持有另一个对象B,可以具有B ...

  2. Java动态代理的两种实现方法

    转载自 http://blog.csdn.net/HEYUTAO007/article/details/49738887 AOP的拦截功能是由java中的动态代理来实现的.说白了,就是在目标类的基础上 ...

  3. Java动态代理生成的对象导出方法

    运行时生成的动态代理对象是可以导出到文件的,方法有两种 在代码中加入System.setProperty("sun.misc.ProxyGenerator.saveGeneratedFile ...

  4. Java 动态代理及 RPC 框架介绍

    所谓动态代理,指的是语言提供的一种语法,能够将对对象中不同方法的调用重定向到一个统一的处理函数中来. python重写__getattr__函数能够做到这一点,就连世界上最好的语言也提供称为魔术方法的 ...

  5. Java动态代理invoke方法自动执行的原因

    Java动态代理invoke方法自动执行的原因 在动态代理中,一般的是先调用Proxy.newProxyInstance()生成代理对象,然后通过调用代理对象的对应方法来实现增强,这里假设代理了被代理 ...

  6. java动态代理【一】

    java动态代理的定义:为其他目标类的方法增加切面的逻辑,即在执行目标类方法的时候,先去执行一段如校验检测的逻辑代码.java通俗一点就是生成一个继承目标类的子类,并在每个调用方法都添加一段逻辑. 应 ...

  7. Java动态代理的实现

    动态代理作为代理模式的一种扩展形式,广泛应用于框架(尤其是基于AOP的框架)的设计与开发,本文将通过实例来讲解Java动态代理的实现过程. 友情提示:本文略有难度,读者需具备代理模式相关基础知识,. ...

  8. JAVA 动态代理学习记录

    打算用JAVA实现一个简单的RPC框架,看完RPC参考代码之后,感觉RPC的实现主要用到了两个方面的JAVA知识:网络通信和动态代理.因此,先补补动态代理的知识.---多看看代码中写的注释 参考:Ja ...

  9. 初看Mybatis 源码 (二) Java动态代理类

    先抛出一个问题,用过Mybatis的都知道,我们只需要定义一个Dao的接口,在里面写上一些CRUD相关操作,然后配置一下sql映射文件,就可以达到调用接口中的方法,然后执行sql语句的效果,为什么呢? ...

最新文章

  1. Android 启动模式简介
  2. 关于FTP上传方法 (by Liang)
  3. mysql linux err2003_远程连接linux下的mysql Err1045 Err2003解决办法
  4. Android开发之系统信息——获取Android手机中SD卡内存信息
  5. 职场中混日子的人都有这几种习惯
  6. open cv+C++错误及经验总结(五)
  7. 149.直线上最多的点数
  8. 找不到该项目,请确认该项目的位置的办法
  9. Scintilla Documentation
  10. 猛文:关于中国歼20气动性能…
  11. 计算机 英语简历,2017计算机英文简历范文
  12. Windows凭据管理器
  13. 安装炫酷桌面himawaripy实施卫星地图
  14. wincc服务器不可用项目打不开,wincc客户端与服务器同步
  15. 347.前K个高频元素 C++
  16. 三相永磁同步电机PMSM仿真 simulink仿真 永磁同步电机仿真,PI调节器
  17. 损耗的基础知识(中)
  18. r语言算巢式设计方差分析_R语言中的方差分析方法汇总
  19. 每日新闻 | 青云QingCloud正式发布超级混合云解决方案及白皮书
  20. 前端渲染10w条数据

热门文章

  1. c#中mysql远程连接方法及实例
  2. c# 多线程 调用带参数函数
  3. IOS15给UICollection添加测试数字
  4. 查WiFi密码的三种方法
  5. oracle一句话倒过来,oracle一些基本语句
  6. 安卓 spinner下拉框 做模糊查询_想做短视频不知道用什么工具?11个免费制作工具收藏起来...
  7. Android动态权限申请工具类非常好用包含9组危险权限
  8. 视频倒退编辑android,视频倒放剪辑app下载-视频倒放剪辑 v2.6.3 安卓版 - 下载吧...
  9. pg日期转周_postgresql 存储过程函数:时间戳与日期字符串相互转换
  10. ios7中让程序使用统一的status bar风格