问题出现

有两种情况:
一种情况是打开activity时webview开始加载页面,但是发现加载了一部分后就停止了,余下的一直不再加载。但是当关闭这个activity时发现webview又继续加载了。

第二种情况是webview正常加载,但是进行操作时发现有些操作没有反应。比如接入支付宝国际sdk,未装支付宝app而使用h5页面时出现点击无反应的情况。

问题解析

进过反复测试发现,是因为有两个含有webview的activity:activityA和activityB。在activityA的onPause和onResume中分别有mWebView.pauseTimers()mWebView.resumeTimers(),但是activityB中没有。先打开activityA加载web页面,然后打开activityB,因为activityB没有resumeTimers,他的部分js未成功加载,所以出现上面的现象。

问题根源

问题的根源就是WebView的pauseTimers()和resumeTimers()这两个方法。它们的源码及注释如下

/*** Pauses all layout, parsing, and JavaScript timers for all WebViews. This* is a global requests, not restricted to just this WebView. This can be* useful if the application has been paused.*/
public void pauseTimers() {checkThread();mProvider.pauseTimers();
}/*** Resumes all layout, parsing, and JavaScript timers for all WebViews.* This will resume dispatching all timers.*/
public void resumeTimers() {checkThread();mProvider.resumeTimers();
}

可以看到这两个方法都是全局的,可以停止所有WebView的加载。所以当打开activityB的时候走了activityA的生命周期onPause,这样执行了pauseTimers(),而因为是全局的所以作用到所有的webview,所以activityB的webview也被pause而停止了加载,同时因为activityB的生命周期中并没有实现这两个函数,所以在pauseTimers()后没有执行resumeTimers(),所以activityB的web页面被pause后也没有恢复,这样就导致了一部分js代码没有加载,这样相关的效果就失效了。

解决方法

解决Webview加载不完全导致部分js无效相关推荐

  1. Android之解决webview加载第三方网页点击弹不出下拉框(html页面里面的select标签)

    1 问题 决webview加载第三方网页点击弹不出下拉框(html页面里面的select标签),我们访问youtube.com官网,点击网站的视频,点击视频右上角三个点设置,然后点击 播放设置 然后点 ...

  2. android webview 无法显示图片,Android解决WebView加载微信公众号文章不显示图片

    分析 从Android5.0以后,当一个安全的站点(https)去加载一个非安全的站点(http)时,需要配置Webview加载内容的混合模式,一共有如下三种模式: ●MIXED_CONTENT_NE ...

  3. 解决WebView加载的网页被放大的问题

    在某些大分辨率下,我们用WebView加载的网页可能会出现被放大的现象,这显然不是我们想要的结果,我开始看WebSettings这个是否可以设置不缩放,webSettings.setBuiltInZo ...

  4. 彻底解决WebView加载html乱码问题

    1.webView.loadData乱码参看"webView.loadData中文乱码问题" 2.webview.loadUrl("http://www.xxx.com& ...

  5. WebView 加载页面空白及加载不全问题

    最近在做开发的时候需要用webview呈现不同的页面,不同的协议,百度了很多种办法都有尝试,但是都没解决webview加载进度100但是没有显示页面的问题,最后在朋友的知道下发现了问题 首先说下URL ...

  6. webview加载本地资源的各种尝试

    1.webview 打开sd卡上的静态html文件 ,js文件既然放在assets文件夹下能找到,那能通过放在sd卡,能加载吗? 答:事实证明,是没有用的. 2.既然能拿到html的数据,那我们是不是 ...

  7. 使用vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题

    使用vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题 当你的SPA(单页应用程序)变得复杂时,打包构建后的Javascript包会变得非常大,以至于严重影响页面的加载时间.vue-r ...

  8. IntelliJ IDEA中无法加载jar包导致出现“cannot resolve symbol...”问题的解决

    IntelliJ IDEA中无法加载jar包导致出现"cannot resolve symbol..."问题的解决 之前也经常碰到这样的错误,通过reimport.清缓存等方法都可 ...

  9. webview加载html图片不显示图片,WebView加载网页不显示图片解决办法

    对于大家来讲WebView肯定很熟悉,因为我们在日常开发中经常用到它.所以对于它的一些基本用法我就不在这啰嗦了,直接进入正题. 我遇到的问题就是在使用WebView加载网页的时候图片不显示(我手机系统 ...

最新文章

  1. 记载下这个题中的语法(对这些语法的使用不熟悉)
  2. 北斗导航 | 北斗卫星导航信号串行捕获算法MATLAB仿真(附源代码)
  3. 征途LINUX服务端脚本,bat脚本实例征途夜行
  4. linux的sed命令是什么,linux sed命令
  5. SQL Server性能优化案例报告
  6. android viewpager fragment 生命周期,ViewPager中Fragment的生命周期
  7. VB 设置控件边框颜色(如:List、Text、Picture)
  8. 关于微积分学的基本定理
  9. 高新计算机考试培训 ppt,全国计算机高新技术考试.ppt
  10. LA 4490 Help Bubu
  11. php下载大文件的方法
  12. 积极主动沟通说话交流的重要性和案例以及技巧
  13. 【Web技术】1352- 如何防止他人恶意调试你的web程序
  14. Javascript TypedArray 解惑:Uint8Array 与 Uint8ClampedArray 的区别
  15. 使用keytool工具产生带根CA和二级CA的用户证书
  16. [Unity2D/3D]实用的血条制作(第二期)
  17. VoLTE常用12大知识点
  18. [ XSS-labs通关宝典 ] xss-labs 通关宝典之 less1 - less5
  19. 记录两种打包后在手机上看日志的方法(vconsole和eruda)
  20. Mp4 分割 怎么将mp4视频文件分割成几段

热门文章

  1. Linux操作系统-命令-free
  2. 中国建设银行(2011.11.19南京大学)
  3. 微信小程序手机预览不正常,打开手机调试后预览正常
  4. ThinkPHP 模板循环语法
  5. Modbus RTU 通信应用案例
  6. 给vmstat加上时间戳
  7. 【9018题解】2109 卡德加的兔子
  8. 昂靠的由来[本博作者爆料]
  9. 升级jquery-easyui1.4.5后treegrid无法显示
  10. Redis自定义动态字符串(sds)模块(二)