2015-11-03 16 views
9

Sto utilizzando AdView e LeakCanary. Frammento che ospita la chiamata adView adView.destroy() in onDestroy, ma LeakCanary mostra che l'attività che ospita questo frammento è trapelata da com.google.android.gms.common.api.a.a.a.i . Il dump di heap mostra anche che ci sono perdite di memoria. Quando rimuovo AdView.loadAd() e non carico annuncio in frammento - non ci sono perdite. Qualche idea o suggerimento? Grazie.AdView causa una perdita di memoria

risposta

1

Potete provare la seguente:

  • spostare la logica in onDestroyView()
  • prima rimuovere il adView dal suo contenitore e quindi chiamare destroy(), vale a dire

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

Sfortunatamente c'è ancora una perdita di memoria. Sembra che adView detenga un riferimento all'attività. –

+0

Non ho mai riscontrato perdite di memoria con AdView e stiamo utilizzando DFP dappertutto. Puoi assicurarti di utilizzare gli ultimi servizi di riproduzione. Sono positivo che sia qualcos'altro, ma non posso dire senza vedere alcun codice sorgente. –

+0

Hai provato le app con LeakCanary o heap dump? Sto usando gli ultimi servizi di riproduzione 8.1.0 –

6

Lo stesso problema, AdView ha una variabile interna (riferimento forte) che tiene sul contesto, che è la mia Activit y, causando una perdita dell'istanza Activity.

La mia dipendenza è com.google.android.gms:play-services-ads:8.3.0

Un soluzione è quello di fornire il contesto dell'applicazione quando si crea l'istanza AdView.

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

Ma se stiamo usando adView in XML, questo non può essere fatto.Ho provato a distruggere il adView onDestroy ma non ha aiutato. –

+0

@Funkyidol ya layout inflater è probabile che fornisce l'attività come il contesto di AdView in layout xml Aggiungendo una vista al gruppo di vista non è così terribile – dvd

+0

Questa è l'unica cosa che ha risolto il problema per me. Peccato non poterlo aggiungere nel layout XML adesso ... – eliasbagley