关于webview导致内存泄漏的问题,网上讨论很多,这是Android的一个Bug。
关于原理分析,可以看看前人的博客:
http://blog.csdn.net/u013571833/article/details/53070236
有人提出方法:webView不要写在xml布局文件里,要在代码中动态添加然后加载网页,然后页面销毁的时候移除并销毁webView就不会导致内存泄漏。但是也存在弊端:这样加载的网页不能很好的实现用户的交互。
下面的文章中给出了一个比较简单易用的方案,亲测可用,只需两步:
https://my.oschina.net/zhibuji/blog/100580
1. 在manifest文件中给webView所在的activity加上android:process属性,例如:
<activity
android:process="com.myapp.webprocess"
android:name=".activity.WebActivity" />
2 . 在webView所在的activity的onDestroy()方法中加上如下代码:
System.exit(0);
这样就可以解决内存泄漏了。
原理是,将webView所在的页面设置为一个单独的进程,当页面销毁时,会调用System.exit()方法,退出这个虚拟机进程,这样内存就得到了回收。而其它页面在另外的进程里,是不受影响的。
注意:这样做带来的一个负面影响是:打开这个带有webview的activity会比其他activity慢一点,因为这个activity是处于另一个进程的。