Ich habe einen Code mit Android Strict Mode eingeschaltet, VmPolicy DetectAll und Penalty Death. Dies ist in der Anwendung aktiviert.EditText verursachte Aktivität zu lecken. Keine aktuelle Stackoverflow-Antwort half
So hilft es mir, Speicherleck zu erkennen. Mein Code ist sehr einfach, 2 Aktivitäten (fast leer). Die MainActivity verfügt über einen Button, um SubActivity zu öffnen. Die SubActivity hat nur einen EditText.
Der Code hier erhalten https://github.com/elye/issue_edittextleak
werden könnte, wenn Sie den Code ausführen, von MainActivity gehen Teilaktivität, und zurück zum MainActivity (Zurück-Taste verwenden), und gehen Teilaktivität, und zurück ... Es wird Absturz mit
E/StrictMode: class com.elyeproj.edittextleak.SubActivity; instances=2; limit=1
android.os.StrictMode$InstanceCountViolation: class com.elyeproj.edittextleak.SubActivity; instances=2; limit=1
at android.os.StrictMode.setClassInstanceLimit(StrictMode.java:1)
Dies ist, weil es erkannt hat SubActivity hat durchgesickert.
Warum SubActivity durchgelaufen ist, weil es EditText hat. Wenn Sie es entfernen, wird es nicht mehr lecken.
Das passiert bei Samsung S5 Lollipop 5.0 (v21). Es leckt auch KitKat (v19). Es passiert nicht auf Samsung S7 Marshmallow und Nexus 6 (Nougat).
Es passiert nicht auf emulierten Nexus 5 Lollipop 5.0.2 (v21). Aber passiert auf V19 emulierten Nexus 5.
Ich habe auf viele Stackoverflow überprüfen, und kann nicht die Lösung finden. Sie werden von mehr Details dieses Problems und meiner Erkundung in https://medium.com/@elye.project/hell-level-4-unleashed-by-android-strict-mode-dare-you-challenge-it-1dc9048bb4fb#.aiffbdikn
lesen Also, was ich will? Ich denke, der Speicherverlust wurde auf Lollipop 5.0.2 und darüber hinaus behoben. Aber für die Version davor, wie könnte ich das Leck verhindern, während ich den editText haben könnte?
Sie müssen den Fokus Ihres Edittext löschen, bevor neue Aktivitäten gestartet werden, EditText.clearfocus(); –