资讯专栏INFORMATION COLUMN

WebView内存泄露的解决方案

Miyang / 3447人阅读

摘要:解决对一些的支持解决内存泄露关于内存泄漏终于找到了终极解决办法该办法适用于我们的需求,在退出的界面之后,迅速回收内存。

一、简介:

做Android开发的相信都对webview不会陌生,而且也对系统自带的webview本身存在的问题也是怨念很久了,一方面是本身对js的支持不是很好另外一方面就是经常被人诟病的内存泄露了,网上也有很多解析和方案但至少在我的项目中是没任何效果的,今天我就分享一下我最终是怎么解决这些问题的(其实是很蠢的一个办法)。

二、需求背景:

需要一个带有加载进度条的webview来正常的显示合作方和自己的web页面。
1、解决webview对一些js的支持:
2、解决webview内存泄露:

关于内存泄漏终于找到了终极解决办法!!!该办法适用于我们的需求,在退出WebView的界面之后,迅速回收内存。也就是说为加载WebView的界面开启新进程,在该页面退出之后关闭这个进程。

这一点说了之后,你懂了吧?
但是在这个其中,杀死自己进程的时候又遇到了问题,网上介绍的各种方法都不好使,
killBackgroundProcesses(getPackageName());各种不好用,最后使用System.exit(0);直接退出虚拟机(Android为每一个进程创建一个虚拟机的)。这个肯定不用纠结了,一旦退出,内存里面释放。听说QQ也是这么做。

在WebView所在的activity中,杀死WebView所在的进程(多带带为WebView所在的activity开一个进程,注意,一个应用可以有多个进程

@Override
public void onDestroy() {
       android.os.Process.killProcess(android.os.Process.myPid());
       super.onDestroy();
}

清单文件


        
            
                
                
            
        

    <---你的WebView所在的activity->
        
        
    

  

  



文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/3009.html

相关文章

  • 性能优化8--内存泄露

    摘要:这样就不会发生内存泄露了。非静态内部类造成内存泄露还有一种情况就是使用或者。一.根源:   内存泄露简单说就是已经没有用的资源,但是由于被其他资源引用着无法被GC销毁。 二.内存泄露常见场景 1.单例导致内存泄露 单例的静态特性使得它的生命周期同应用的生命周期一样长,如果一个对象已经没有用处了,但是单例还持有它的引用,那么在整个应用程序的生命周期它都不能正常被回收,从而导致内存泄露...

    番茄西红柿 评论0 收藏0
  • Android内存泄露解决之道

    摘要:导致了当旋转屏幕时,无法被回收,而造成内存泄露。但是,她却会造成严重的内存泄露。参考内存泄露问题的整理内存泄露使用中可能引发的内存泄漏介绍了内存泄露有关的解决办法,下一篇总结遇到时的解决之道。 面试的时候经常会被问道内存泄露优化,和碰到OOM该怎么出来,今天就做个总结。 为什么会内存泄露? 根本原因就是一个永远不会被使用的对象,因为一些引用没有断开,没有满足GC条件,导致不会被回收,这...

    ConardLi 评论0 收藏0
  • Android内存泄露解决之道

    摘要:导致了当旋转屏幕时,无法被回收,而造成内存泄露。但是,她却会造成严重的内存泄露。参考内存泄露问题的整理内存泄露使用中可能引发的内存泄漏介绍了内存泄露有关的解决办法,下一篇总结遇到时的解决之道。 面试的时候经常会被问道内存泄露优化,和碰到OOM该怎么出来,今天就做个总结。 为什么会内存泄露? 根本原因就是一个永远不会被使用的对象,因为一些引用没有断开,没有满足GC条件,导致不会被回收,这...

    tyheist 评论0 收藏0
  • 首个hybird商业项目踩坑总结

    摘要:该文章是一个系列文章,是本人在开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。 该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。该系列引用了《Android开发艺术探索》以及《深入理解Android 卷Ⅰ,Ⅱ,Ⅲ》中的相关知识,另外也借鉴了其他的优质博客,在此向各位大神表示感谢,膜拜!!...

    darryrzhong 评论0 收藏0
  • Android 内存泄露总结(附内存检测工具)

    摘要:堆内存用于存放对象实例。在堆内存中频繁的会造成大量内存碎片,使程序效率降低。资源未关闭造成的内存泄露,之类的没有解除注册,之类的没有无限循环的动画在退出前没有停止一些其他的该的没有,该的没有等等。 Java 中的内存分配 主要是分三块: 静态储存区:编译时就分配好,在程序整个运行期间都存在。它主要存放静态数据和常量。 栈区:当方法执行时,会在栈区内存中创建方法体内部的局部变量,方法结...

    JiaXinYi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<