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

关于连续打开多个包含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对象

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

猜你喜欢

转载自blog.csdn.net/zz6880817/article/details/79363042