J'utilise AdView et LeakCanary. Fragment qui héberge adView appelle adView.destroy() dans onDestroy, mais LeakCanary montre que l'activité qui héberge ce fragment est divulguée par com.google.android.gms.common.api.a.a.a.i . Le vidage de tas montre également qu'il y a une fuite de mémoire. Lorsque je supprime AdView.loadAd() et ne pas charger l'annonce dans le fragment - il n'y a pas de fuite. Des pensées ou des suggestions? Merci.AdView provoque une fuite de mémoire
Répondre
Pouvez-vous essayer ce qui suit:
- déplacer votre logique dans onDestroyView()
d'abord retirer votre
adView
de son contenant, puis appelez destroy(), c.-à-ViewParent parent = adView.getParent(); if (parent != null && parent instanceof ViewGroup) { ((ViewGroup) parent).removeView(adView); } adView.destroy(); adView = null;
Même problème, AdView possède une variable interne (référence forte) qui tient sur le contexte, ce qui est mon Activit y, provoquant une fuite de l'instance Activity.
Ma dépendance est com.google.android.gms:play-services-ads:8.3.0
Une solution de contournement est de fournir le contexte de l'application lors de la création de l'instance AdView.
AdView adview = new AdView(getApplicationContext());
Mais si nous utilisons adView en XML alors cela ne peut pas être fait.J'ai essayé de détruire l'adView onDestroy, mais n'a pas aidé –
@Funkyidol ya inflat de disposition est susceptible de fournir l'activité comme le contexte de AdView dans layout xml Ajouter une vue à viewgroup par programmation n'est pas si terrible – dvd
C'est la seule chose qui me l'a corrigé ... Dommage que je ne puisse pas l'ajouter dans la mise en page XML maintenant ... – eliasbagley
Malheureusement, il y a toujours une fuite de mémoire. On dirait que adView détient une référence sur l'activité. –
Je n'ai jamais rencontré de fuites de mémoire avec AdView et nous utilisons DFP partout. Pouvez-vous vous assurer que vous utilisez les derniers services Play? Je suis certain que c'est quelque chose d'autre mais je ne peux pas dire sans voir un code source. –
Avez-vous testé des applications avec LeakCanary ou par vidage de tas? J'utilise les derniers services de jeu 8.1.0 –