Android如何避免WebView内存泄漏
2018-08-09 本文已影响807人
柏林billy
Android如何避免WebView内存泄漏
- 什么是内存泄漏
内存泄漏通俗的讲就是你创建了一个对象,却没有在合适的时候销毁他,他一直存在在内存中耗费了内存空间.
- 1.代码中创建WebView
- 如果是
Xml
创建的通过findViewById()
加载的webView
会一直存在,不能对其进行销毁 - 所以我们因该在代码中创建
webView
代码如下
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建一个LayoutParams宽高设定为全屏
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
//创建WebView
mWebView = new WebView(getApplicationContext());
//设置WebView的宽高
mWebView.setLayoutParams(layoutParams);
//把webView添加到容器中
mLayout.addView(mWebView);
}
- 2.代码中销毁WebView
- 我们在代码中去创建
webView
就是为了方便之后在代码中对其进行销毁 - 一般是在
Activity
销毁的时候,先把WebView
加载Null内容,然后移除webView
再销毁webView
,最后置空,代码如下
@Override
protected void onDestroy() {
if (mWebView != null) {
//加载null内容
mWebView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
//清除历史记录
mWebView.clearHistory();
//移除WebView
((ViewGroup) mWebView.getParent()).removeView(mWebView);
//销毁VebView
mWebView.destroy();
//WebView置为null
mWebView = null;
}
super.onDestroy();
}