WebView 避免内存泄露的方法

简介:

最近遇到一个Webview内存泄露的问题,上网查了一些结果,在此记录一下:


    webview在android系统中属于一个比较特殊的view,在调用 webview.destroy()的时候,必须确保webview已经从view tree中被删除,否则这个函数不会执行的。如本app中的用法,在xml中静态定义的webview,只有在整个view退出后调用 webview.destroy()才会被正确执行,但整个view退出后又找不到webview了,这个是很矛盾的。


    所以android给出的解决方案是,不要在xml中定义webview,在xml中只定义view,然后在需要webview的时候,创建一个webview,并把webview放到定义好的view的位置。
在删除得的时候,先把webview从parent view中删除,然后释放,就不会有问题了。


在应用层修改如下:
    WebView    mWebView = new WebView(getApplicationgContext()); 
    LinearLayout mll  = findViewById(R.id.xxx); 
    mll.addView(mWebView); 

    protected void onDestroy() { 
          super.onDestroy(); 

          mll.removeView(wv);  //从布局中移除webView

          mWebView.removeAllViews(); 
          mWebView.destroy() 
    }


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



     本文转自zhf651555765 51CTO博客,原文链接:http://blog.51cto.com/smallwoniu/1841012,如需转载请自行联系原作者



相关文章
|
8月前
|
缓存 Java Shell
Android 内存泄露,怎样查找,怎么产生的内存泄露?
Android 内存泄露,怎样查找,怎么产生的内存泄露?
53 0
|
4月前
|
架构师 C语言 C++
内存泄漏专题(2)如何判断程序有内存泄露
内存泄漏专题(2)如何判断程序有内存泄露
28 1
|
5月前
|
JavaScript Java
JS内存泄漏是什么 什么情况下会出现内存泄漏 内存泄漏怎么解决
JS内存泄漏是什么 什么情况下会出现内存泄漏 内存泄漏怎么解决
17 0
|
前端开发 Java Linux
内存泄露,OOM,ANR ,Devik 进程,Framework原理,Activity 生成一个 view,Android 中的动画,SurfaceView和V
内存泄露,OOM,ANR ,Devik 进程,Framework原理,Activity 生成一个 view,Android 中的动画,SurfaceView和V
202 0
|
Android开发
WebView需要销毁
WebView需要销毁
650 0
|
Web App开发 存储 监控
前端内存泄露浅析
手上负责的vue项目最近出现一个这样的问题,用户用着用着就出现:”喔唷,崩溃啦!“的提示。
前端内存泄露浅析
|
存储 JavaScript Java
【代码篇】事件监听函数的内存泄漏,都给我退散吧!
内存泄漏是个很严肃的问题,可是迄今也没有一个非常有效的排查方案,本方案就是针对性的单点突破。 工作中,我们会对window, DOM节点,WebSoket, 或者单纯的事件中心等注册事件监听函数, 添加了,没有移除,就会导致内存泄漏,如何预警,收集,排查这种问题呢?
186 0
【代码篇】事件监听函数的内存泄漏,都给我退散吧!
|
Android开发 内存技术 数据格式
|
Android开发
Android代码优化之Handler内存泄漏
目录 目录 前言 Android代码中涉及进程间通信的地方经常会使用Handler。 public class MainActivity extends AppCompatActivity { //可能引入内存泄漏的方法 p...
1611 0