在应用中利用webview加载网页引起的内存高消耗

      android在应用中加载网页需要用到webview ,而webview需要加载在activity中显示,即webview要将显示内容绘制到activity上,由于为了避免webview对内存的消耗,一般在应用中需要动态加载,而不能再xml中显示的静态加载。
 
 
	webView = new MeetingWebView(this);

		RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
				RelativeLayout.LayoutParams.MATCH_PARENT,
				RelativeLayout.LayoutParams.MATCH_PARENT);

		rel_webview.addView(webView, params);

      可以看到创建webview时候传入的是activity的context,大家知道应用进程不停止的话,对activity的引用会一直保存,所以这个webview的引用会被应用一直保持,不能被gc回收,这样就造成了app的内存泄露,如何解决呢...

     因为只要进程不终止,webview的引用会一直保持,所以我们可以将加载webview的activity在一个新的进程中启动,这样在activity ondestroy()时,退出该进程,那么webview的引用也将得到释放,内存也就不会泄露。

     而在一个新的进程中启动一个activity,可以参考下面资料:

    http://blog.csdn.net/luoshengyang/article/details/6720261

    最后在Ondestroy方法中显示的调用:

   

protected void onDestroy() {
super.onDestroy();
if (webView != null) {

webView.removeAllViews();

webView.destroy();
}
System.exit(0);
}


 参考:http://my.oschina.net/zhibuji/blog/100580

 


 

你可能感兴趣的:(android,View)