參考:
LeakCanray原理
https://mp.weixin.qq.com/s/PgY_ZVsqLOr4-xMZNBSVSA
http://www.itdecent.cn/p/49239eac7a76
快奔潰了,弄了三天內(nèi)存泄露了還是沒有解決完,總結(jié)一下解決了的吧。
- Stack<Activity> activityStack代碼里面每個(gè)Activity都添加了這個(gè)棧,卻沒有退棧所以Activity一直被挾持,一直泄。
解決方案:每個(gè)Activity的 onDestroy里面使用這個(gè)finishActivity(this) 進(jìn)行釋放Activity
public void finishActivity(Activity activity) {
if (activity != null) {
activityStack.remove(activity);
activity.finish();
activity = null;
}
}
2.有個(gè)單例的PreferenceHelper,里面的context是靜態(tài)的,一直挾持所用到的Activity,真是一直爽啊,所以把傳進(jìn)去的context.getApplicationContext()進(jìn)行解決,所有靜態(tài)的context都使用context.getApplicationContext()進(jìn)行優(yōu)化即可。
3.fragement的泄露還在進(jìn)行中。。。