Wir haben LeakCanary integriert, um Probleme mit Speicherlecks zu beheben. Um sicher zu machen haben wir alles aufgebaut rechts Ich habe eine statische Referenz geschaffen, die entfernt werden nicht und sagte leakCanary es zu sehen,LeakCanary fängt keine Lecks ab, die ich absichtlich hinzugefügt habe. Was vermisse ich?
public class Cat {
}
public class Box {
public Cat hiddenCat;
}
public class Docker {
public static Box container;
}
Im MainActivity
Box box;
Cat schrod;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
box = new Box();
schrod = new Cat();
box.hiddenCat = schrod;
Docker.container = box;
Application.getRefWatcher().watch(schrod);
System.gc();
}
in der Application
Klasse
private static RefWatcher sRefWatcher;
@Override
public void onCreate() {
sRefWatcher = LeakCanary.install(this);
}
public static RefWatcher getRefWatcher() {
return sRefWatcher;
}
und in der build.gradle
Datei:
dependencies {
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
}
Was fehlt mir, dass es mich nie informiert, dass der Verweis auf das Schrod-Objekt klebt?
in der Tat, dass es fixiert. –