webview内存泄漏处理----无效请喷我
来源:互联网 发布:centos ftp客户端命令 编辑:程序博客网 时间:2024/05/18 02:17
首先不得不吐槽一下,谷歌的webview太坑爹了,一大堆问题。和ios的webview简直一个屌丝一个高富帅。
在开发过程中公司那边有一些h5模板就各种嵌套webview展示界面,但是加载的页面如果有很多图片就会发现内存占用暴涨,并且在退出该界面后。
即使在包含该webview的Activity的destroy()方法中,使用webview.destroy();webview=null;对内存占回收用还是没有任何效果。
可以说谷歌配套的webview销毁处理方法是一点软用都没有,而且当webview加载的网页的图片等内存文件还会一直占用手机内存---我都无力吐槽了。
------------------------------------解决方案:-
第一种:
在manifest.xml中包含webview的activity中声明一个android:process=“your package name.aaa”
这一种要注意点:实际上这种处理方法是将这个页面独立出一个进程,意思就是你开了这个页面webview加载的图片等在关闭界面时,就相当于关闭这个创建出来的小程序,就不会影响应用内存泄漏了。
但是缺陷就是这个页面与应用的消息传递就会出问题,例如eventbus就会失效。
第二种:
创建一个FrameLayout作为父容器,webview通过动态的在创建添加:--------在xml中:
<FrameLayout android:id="@+id/webview_contain" android:layout_width="wrap_content" android:layout_height="wrap_content"></FrameLayout>
--------在代码中new出来webview:
if (mWebview==null){ mWebview=new WebView(getApplicationContext());//注意getApplicationContext生命周期短不会产生内存泄漏}
FrameLayout mWebContainer= (FrameLayout) findViewById(R.id.web_container);
//手动的添加到父容器显示mWebContainer.addView(mWebview);//手动的父容器从移除显示
if (mWebview!=null){ mWebview=null; mWebContainer.removeView(mWebview);}
------通常内存移除写法:
好了,这种方法最普遍使用了,当然父容器不一定是FrameLayout,也可以是ListView等可以add进去的。
-------------------------------------------------------
最后总结:百度搜索一大堆博客,后面测试完内存后竟然都基本没用,坑了我一大堆时间,这两种方法亲测消除内存泄漏,不行来喷我啊,默默表示没机会。如果要demo,请留言评论,谢谢。
1 0
- webview内存泄漏处理----无效请喷我
- webview内存泄漏问题
- WebView内存泄漏
- WebView内存泄漏记录
- Android WebView 内存泄漏
- WebView内存泄漏解决方法
- WebView内存泄漏解决方法
- WebView内存泄漏修复
- WebView内存泄漏--解决方法
- 解决webview内存泄漏问题
- Android---WebView内存泄漏解决方法
- Android WebView内存泄漏分析
- Android WebView Memory Leak WebView内存泄漏
- Android WebView Memory Leak WebView内存泄漏
- Android WebView Memory Leak WebView内存泄漏
- Android WebView Memory Leak WebView内存泄漏
- Android WebView Memory Leak WebView内存泄漏
- Android WebView Memory Leak WebView内存泄漏
- 线性表
- JavaScript function函数种类
- UUID和自增列的优缺点
- 使用ceoh-deploy工具快速部署ceph--先决条件准备
- 打开Java中的SecurityManager
- webview内存泄漏处理----无效请喷我
- SDUST 第四次实验
- Flume性能测试报告
- 校招面试心得
- C#中New关键字的三种用法
- 常用Linux命令、文件操作解压缩相关、Linux命令大全、测试查询
- android MediaPlay的属性和方法简单介绍
- dubbo应用程序的单元测试环境搭建(springtest,powermock,mockito)(三)
- nyoj 284 坦克大战