zoukankan      html  css  js  c++  java
  • 使用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的基类中,具体实现:
     
     
  • 相关阅读:
    用Java实现四则运算
    敏捷开发角色分配
    需求分析之WBS
    需求分析之NABCD
    电梯演说
    开发流程的选择
    软件团队模式的选择
    维护日程管理项目
    日程管理系统中找错误
    Android的测试
  • 原文地址:https://www.cnblogs.com/androiddream/p/9007690.html
Copyright © 2011-2022 走看看