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

本文介绍了在Android应用中使用WebView加载网页时可能遇到的内存泄露问题,并提供了解决方案,包括将WebView置于单独的进程中及在Activity销毁时释放WebView资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      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

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值