Android webview内存泄漏问题的解决
2017-06-27 14:49
232 查看
关于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属性,例如:
2 . 在webView所在的activity的onDestroy()方法中加上如下代码:
这样就可以解决内存泄漏了。
原理是,将webView所在的页面设置为一个单独的进程,当页面销毁时,会调用System.exit()方法,退出这个虚拟机进程,这样内存就得到了回收。而其它页面在另外的进程里,是不受影响的。
注意:这样做带来的一个负面影响是:打开这个带有webview的activity会比其他activity慢一点,因为这个activity是处于另一个进程的。
关于原理分析,可以看看前人的博客:
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是处于另一个进程的。
相关文章推荐
- Android 5.1 WebView内存泄漏问题及快速解决方法
- Android 5.1 WebView内存泄漏问题及解决
- Android 5.1版本以上WebView内存泄漏问题及快速解决方法
- Android WebView 软键盘遮挡输入框问题的解决方法
- 如何解决Android WebView出现的乱码问题
- android webview内容压线问题解决方法
- android开发中webview保存cookie问题的解决
- android开发中webview保存cookie问题的解决
- [android webview]android webview loadData乱码问题解决方法
- android webview ZoomButtonsController 导致android.view.WindowLeaked 问题彻底解决
- Android中的WebView进行直接加载网页(要注意解决权限问题)
- android webview 显示空白页问题解决
- 如何解决Android WebView出现的乱码问题
- 【Android】4.04系统WebView播放不了Flash问题的解决办法
- Android使用WebView嵌入网页,网页内点击跳转到另一个网页后,返回问题解决
- android :webview 解决遇到的跨域问题
- android webview 字体切换 反白乱的问题解决
- 如何解决Android WebView出现的乱码问题
- android开发中webview保存cookie问题的解决
- Android webview通过http get下载文件下载两次的问题及解决方法