解决Webview加载不完全导致部分js无效
问题出现
有两种情况:
一种情况是打开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无效相关推荐
- Android之解决webview加载第三方网页点击弹不出下拉框(html页面里面的select标签)
1 问题 决webview加载第三方网页点击弹不出下拉框(html页面里面的select标签),我们访问youtube.com官网,点击网站的视频,点击视频右上角三个点设置,然后点击 播放设置 然后点 ...
- android webview 无法显示图片,Android解决WebView加载微信公众号文章不显示图片
分析 从Android5.0以后,当一个安全的站点(https)去加载一个非安全的站点(http)时,需要配置Webview加载内容的混合模式,一共有如下三种模式: ●MIXED_CONTENT_NE ...
- 解决WebView加载的网页被放大的问题
在某些大分辨率下,我们用WebView加载的网页可能会出现被放大的现象,这显然不是我们想要的结果,我开始看WebSettings这个是否可以设置不缩放,webSettings.setBuiltInZo ...
- 彻底解决WebView加载html乱码问题
1.webView.loadData乱码参看"webView.loadData中文乱码问题" 2.webview.loadUrl("http://www.xxx.com& ...
- WebView 加载页面空白及加载不全问题
最近在做开发的时候需要用webview呈现不同的页面,不同的协议,百度了很多种办法都有尝试,但是都没解决webview加载进度100但是没有显示页面的问题,最后在朋友的知道下发现了问题 首先说下URL ...
- webview加载本地资源的各种尝试
1.webview 打开sd卡上的静态html文件 ,js文件既然放在assets文件夹下能找到,那能通过放在sd卡,能加载吗? 答:事实证明,是没有用的. 2.既然能拿到html的数据,那我们是不是 ...
- 使用vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
使用vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题 当你的SPA(单页应用程序)变得复杂时,打包构建后的Javascript包会变得非常大,以至于严重影响页面的加载时间.vue-r ...
- IntelliJ IDEA中无法加载jar包导致出现“cannot resolve symbol...”问题的解决
IntelliJ IDEA中无法加载jar包导致出现"cannot resolve symbol..."问题的解决 之前也经常碰到这样的错误,通过reimport.清缓存等方法都可 ...
- webview加载html图片不显示图片,WebView加载网页不显示图片解决办法
对于大家来讲WebView肯定很熟悉,因为我们在日常开发中经常用到它.所以对于它的一些基本用法我就不在这啰嗦了,直接进入正题. 我遇到的问题就是在使用WebView加载网页的时候图片不显示(我手机系统 ...
最新文章
- 记载下这个题中的语法(对这些语法的使用不熟悉)
- 北斗导航 | 北斗卫星导航信号串行捕获算法MATLAB仿真(附源代码)
- 征途LINUX服务端脚本,bat脚本实例征途夜行
- linux的sed命令是什么,linux sed命令
- SQL Server性能优化案例报告
- android viewpager fragment 生命周期,ViewPager中Fragment的生命周期
- VB 设置控件边框颜色(如:List、Text、Picture)
- 关于微积分学的基本定理
- 高新计算机考试培训 ppt,全国计算机高新技术考试.ppt
- LA 4490 Help Bubu
- php下载大文件的方法
- 积极主动沟通说话交流的重要性和案例以及技巧
- 【Web技术】1352- 如何防止他人恶意调试你的web程序
- Javascript TypedArray 解惑:Uint8Array 与 Uint8ClampedArray 的区别
- 使用keytool工具产生带根CA和二级CA的用户证书
- [Unity2D/3D]实用的血条制作(第二期)
- VoLTE常用12大知识点
- [ XSS-labs通关宝典 ] xss-labs 通关宝典之 less1 - less5
- 记录两种打包后在手机上看日志的方法(vconsole和eruda)
- Mp4 分割 怎么将mp4视频文件分割成几段