我是靠谱客的博主 坚强面包,最近开发中收集的这篇文章主要介绍android对webview内存限制,Android WebView引起内存泄露,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

WebView会引起内存泄露这是地球人都知道的事情了,这是因为如果在xml文件中定义WebView的话,WebView会对当前的Activity持有引用,这样会引起Activity无法正常销毁从而引起Activity的内存泄露。

解决方式:

一、手动添加WebView,手动销毁

1.不要在XML中声明WebView,而是在Activity中手动添加

//Activity的onCreate方法

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//LinearLayout的作用是承载WebView

LinearLayout linearLayout = new LinearLayout(this);

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);

//Context对象要传Application

mWebView = new WebView(getApplicationContext());

linearLayout.addView(mWebView,params);

//将LinearLayout设置给Activity

setContentView(linearLayout);

}

2.手动销毁WebView

/**

* activity的onDestroy()方法

*/

@Override

protected void onDestroy() {

//注意WebView的处理要写在super.onDestroy()之前

if (mWebView != null) {

mWebView.loadDataWithBaseURL(null,"","text/html","utf-8",null);

mWebView.stopLoading();

ViewGroup parent = (ViewGroup) mWebView.getParent();

if (parent != null) {

parent.removeView(mWebView);

}

mWebView.clearHistory();

mWebView.destroy();

mWebView=null;

}

super.onDestroy();

}

这种处理方式网上对其效果褒贬不一,有说有效果的,有说没有效果的,估计是不同的版本效果不一致,甚至不同的机型效果都可以不一致,这里仅作记录使用

二、多进程

在Android开启多进程非常简单,你只需要给需要开启多进程的Activity或者Service指定process属性即可

1.Manifest的配置

2.启动代码

Intent intent = new Intent("com.test.home.activity.WebActivity");

startActivity(intent);

3.销毁代码

/**

* activity的onDestroy()方法

*/

@Override

protected void onDestroy() {

super.onDestroy();

//销毁新开启的进程

System.exit(0);

}

这种处理方式毫无疑问可以防止内存泄露,而且代码量也比较小。而其带来的副作用也是显而易见的—你需要处理多进程的问题。如果业务不复杂,那么使用这种方式是没有问题的,如果业务比较复杂,建议还是不要使用此方式

本文分享 CSDN - 大心A。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

最后

以上就是坚强面包为你收集整理的android对webview内存限制,Android WebView引起内存泄露的全部内容,希望文章能够帮你解决android对webview内存限制,Android WebView引起内存泄露所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部