热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于连续打开多个包含WebView的Activity出现空白加载不出来的bug的解决方案

关于连续打开多个包含WebView的Activity出现空白加载不出来的bug的解决方案上段时间公司有个项目,需要打开多个Activity,每个Activity都有一个Webview去加载

关于连续打开多个包含WebView的Activity出现空白加载不出来的bug的解决方案

上段时间公司有个项目,需要打开多个Activity,每个Activity都有一个Webview去加载网页,当连续重复打开几个Activity后有时候会发现页面变空白了,一直加载不出来网页。

  • 没加载到?
    流量显示,发现是有流量消耗的,说明网页信息是有加载的。
  • webview的问题?
    由于我用的是腾讯的X5,所以改成用原生的和crosswalk的webview,郁闷地发现还是一样会出现这个问题!
  • webview对象没销毁?
    看了下代码,每次在Activity的onDestory方法里都有执行mWebView = null 去清除对象,避免内存泄漏,应该是有销毁的~~~~

后来仔细看了下AndroidStudio的内存动态展示图,发现连续调多个Activity后内存的峰高会提升(这是正常的), 但是当我销毁掉剩下第一个Activity的时候发现峰值有所降低了,但是好像比刚开始的高了一点!于是我开始怀疑上面的第三点,webview对象没销毁~

于是查了资料,才发现Webview对象的销毁不是简单的webview =null 就能解决的,这样子还是会出现内存泄漏,所以我们还要加上这两句话

this.removeAllViews()
(parent as ViewGroup).removeView(this)

第一句是移除掉webview对象里面的所有子View
然后是获取它的父对象去移除当前改webview对象

大功告成~~~~不会出现空白界面了。
话说这个问题坑了我一段时间了,网上的解决方案都不适用我这种情况,没办法,只能怪我平时代码写的不够注意,只能一步一步来,最后解决了还是挺开心的~!


推荐阅读
author-avatar
TST闪闪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有