2015-11-03 9 views
9

Ich verwende AdView und LeakCanary. Das Fragment, das den adView-Aufruf adView.destroy() in onDestroy aufruft, aber LeakCanary zeigt, dass die Aktivität, die dieses Fragment hostet, von com.google.android.gms.common.api.a.a.a.i durchgesickert wird. Heap Dump zeigt auch, dass Speicherleck vorhanden ist. Wenn ich AdView.loadAd() entferne und Ad nicht in das Fragment lade - gibt es kein Leck. Irgendwelche Gedanken oder Vorschläge? Vielen Dank.AdView verursacht Speicherverlust

Antwort

1

können Sie versuchen, die folgenden:

  • Ihre Logik in onDestroyView()
  • bewegen zuerst Ihre adView aus ihrem Behälter entfernen und dann rufen Sie zerstören(), dh

    ViewParent parent = adView.getParent(); 
    if (parent != null && parent instanceof ViewGroup) { 
        ((ViewGroup) parent).removeView(adView); 
    } 
    
    adView.destroy(); 
    adView = null; 
    
+1

Leider gibt es immer noch ein Speicherleck. Scheint so, als ob adView eine Referenz zu Aktivitäten enthält. –

+0

Ich habe noch nie Speicherlecks mit AdView festgestellt und wir verwenden DFP überall. Können Sie sicherstellen, dass Sie die neuesten Play-Dienste verwenden? Ich bin sicher, dass es etwas anderes ist, aber ich kann nicht sagen, ohne einen Quellcode zu sehen. –

+0

Haben Sie Apps mit LeakCanary oder mit Heap Dump getestet? Ich verwende die neuesten 8.1.0 Play Services –

6

Gleiches Problem, AdView hat eine interne Variable (starke Referenz), die den Kontext festhält, was mein Activit ist y, wodurch ein Leck der Activity-Instanz verursacht wird.

Meine Abhängigkeit ist com.google.android.gms:play-services-ads:8.3.0

A Abhilfe ist den Anwendungskontext zu liefern, wenn die AdView Instanz erstellen.

AdView adview = new AdView(getApplicationContext()); 
+0

Aber wenn wir adView in XML verwenden dann kann dies nicht getan werden. Ich versuchte, die adView onDestroy zu zerstören, aber nicht geholfen. –

+0

@Funkyidol ya Layout Inflater ist wahrscheinlich die Aktivität als den Kontext zu AdView in layout xml. Das Hinzufügen einer View zur Viewgroup programmatisch ist nicht so schlimm. – dvd

+0

Das ist das einzige, was es für mich repariert hat Schade, dass ich es jetzt nicht im XML-Layout hinzufügen kann ... – eliasbagley