• 使用LeakCanary进行内存泄漏追踪


    LeakCanary使用
    1.在build.gradle 中
    dependencies {
        //添加
        debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
        releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
    }
    2.如图:在Applaction onCreate()中
    调用如下代码对LeakCanary进行初始化
    3.实例:
    在启动ChangeAgreementActivity 时会new 一个Fragment:ChangeAgreementFragment,在该fragment 的基类中调用了SharedPreferencesHelper类,在该类中通过单例模式持有了一个context,当ChangeAgreementActivity destory时,其Context会一直存在于单例中,由此引起内存泄漏。
     
     
    现象:在启动app中某个Activity时会出现下图表示该页面存在内存泄漏:
    可以通过点击通知栏orLeakCanary的icon查看泄漏记录图下图,进而追踪到SharedPrefreencesHelper中
     
    修改思路:使用WeakReference 关联Context。
    具体实施:
    参见:SharedPreferencesHelper图的第二个红框上边注释的代码:mContext = ApplicationMy.getInstance();直接在SharedPreferencesHelper中调用Applaction中的Context。 而getInstance()在ApplicationMy的基类中,具体实现:
     
     
  • 相关阅读:
    原生js系列 删除元素
    事件绑定的几种方式
    js的五种输出方式
    三、浏览器事件处理机制--事件循环(event loop)
    二、事件流、事件代理
    一、事件的分类
    js数据类型转换
    html锚点
    观察者模式
    策略模式
  • 原文地址:https://www.cnblogs.com/androiddream/p/9007690.html
Copyright © 2020-2023  润新知