Speicherleck (Aktivitätsleck) durch CookieSyncManager?

8

Ich habe das MAT-Tool in Eclipse verwendet, um ein Speicherleck-Problem zu untersuchen, und habe festgestellt, dass gelegentlich eine CookieSyncManager-Thread-Instanz meine Aktivität verliert. Der Pfad von meiner Aktivität zu GC root ist wie folgt:

%Vor%

MyActivity namens CookieSyncManager.createInstance (this.getApplicationContext ()); in onCreate (), aber es verwendet keine webview. Es enthält nur einige Animationen. Ich verstehe nicht, warum es von CookieSyncManager durchgesickert ist. Kann jemand helfen?

Danke.

    
Kai 18.10.2011, 17:06
quelle

1 Antwort

1

Sie könnten CookieSyncManager.createInstance aufrufen (this.getApplicationContext ()); Verwenden eines Context Wrappers, der nur eine schwache Referenz auf den tatsächlichen Kontext enthält.

In diesem Fall würden Sie alle Aufrufe an den schwach referenzierten Kontext delegieren, der automatisch gelöscht wird, wenn keine anderen starken Referenzen darauf stehen. Stellen Sie nur sicher, dass Sie eine Nullprüfung durchführen, bevor Sie auf den aktuellen Kontext zugreifen.

%Vor%

das Speichern in einer lokalen Variablen ist wichtig und könnte ein Npe verhindern, wenn die Referenz gelöscht wird, während der Code ausgeführt wird.

Das sieht irgendwie wie ein potentielles Framework-Problem aus, aber wenn das Framework diese Referenz ein wenig später löscht, sollte es auch in Ordnung sein. Und in diesem Fall ist es vielleicht kein echtes Problem, nur ein falsches Positiv.

    
nickmartens1980 09.07.2013 07:14
quelle

Tags und Links