止泄药(LeakCanray)——Android 内存泄露

参考:
LeakCanray原理
https://mp.weixin.qq.com/s/PgY_ZVsqLOr4-xMZNBSVSA
https://www.jianshu.com/p/49239eac7a76

快奔溃了,弄了三天内存泄露了还是没有解决完,总结一下解决了的吧。

  1. Stack activityStack代码里面每个Activity都添加了这个栈,却没有退栈所以Activity一直被挟持,一直泄。
    解决方案:每个Activity的 onDestroy里面使用这个finishActivity(this) 进行释放Activity
   public void finishActivity(Activity activity) {
        if (activity != null) {
            activityStack.remove(activity);
            activity.finish();
            activity = null;
        }
    }

2.有个单例的PreferenceHelper,里面的context是静态的,一直挟持所用到的Activity,真是一直爽啊,所以把传进去的context.getApplicationContext()进行解决,所有静态的context都使用context.getApplicationContext()进行优化即可。

3.fragement的泄露还在进行中。。。

你可能感兴趣的:(止泄药(LeakCanray)——Android 内存泄露)