我正在使用AdView和LeakCanary。承载adView的片段在onDestroy中调用adView.destroy(),但LeakCanary显示托管此片段的Activity由com.google.android.gms.common.api.a.a.a.i 泄露。堆转储还显示有内存泄漏。当我删除AdView.loadAd()并且不在片段中加载广告时 - 没有泄漏。任何想法或建议?谢谢。AdView导致内存泄漏
回答
你可以尝试以下方法:
- 在onDestroyView()
移动你的逻辑首先从包装箱中取出您的
adView
,然后调用destroy(),即ViewParent parent = adView.getParent(); if (parent != null && parent instanceof ViewGroup) { ((ViewGroup) parent).removeView(adView); } adView.destroy(); adView = null;
同样的问题,AdView有一个内部变量(强引用),保持在上下文中,这是我的Activit y,导致Activity实例泄漏。
我的依赖是com.google.android.gms:play-services-ads:8.3.0
一个解决方法是创建AdView的实例时提供的应用程序上下文。
AdView adview = new AdView(getApplicationContext());
但是,如果我们在XML中使用adView,那么这是不能做到的。我试图销毁adView onDestroy,但没有帮助。 –
@Funkyidol ya布局inflater可能提供活动作为AdView的上下文layout xml。以编程方式向视图组添加视图并不是那么糟糕 – dvd
这是我唯一能解决的问题,我现在无法将它添加到XML布局中... – eliasbagley
- 1. SiftDescriptorExtractor导致内存泄漏
- 2. vtkWindowToImageFilter导致内存泄漏?
- 3. SKEmitterNode导致内存泄漏
- 4. SmtpClient.Send导致内存泄漏
- 5. pushViewController导致内存泄漏
- 6. CALayer导致内存泄漏?
- 7. SoundPlayer导致内存泄漏?
- 8. glTexImage2D导致内存泄漏
- 9. setTimeout导致内存泄漏
- 10. Dispatcher.beginInvoke导致内存泄漏
- 11. AVAudioPlayer导致内存泄漏
- 12. strdup()导致内存泄漏?
- 13. IntPtr导致内存泄漏?
- 14. NSRunAlertPanel导致内存泄漏
- 15. uipickerview导致内存泄漏
- 16. URL.createObjectURL导致内存泄漏
- 17. net.sourceforge.jtds.jdbc.cache.SimpleLRUCache导致内存泄漏
- 18. 指针操作++导致内存泄漏?
- 19. WatchService导致tomcat内存泄漏?
- 20. OpenCV - cvExtractSURF导致内存泄漏?
- 21. Tomcat的ThreadWithAttributes导致内存泄漏
- 22. 这是否会导致内存泄漏?
- 23. 确实android.media.SoundPool导致内存泄漏?
- 24. jQuery.data会导致内存泄漏吗?
- 25. QProgressBar :: setValue(int)导致内存泄漏?
- 26. NSThread导致内存泄漏iPhone
- 27. RunonUiThread()或CustomListAdapter导致内存泄漏?
- 28. UIAlertView显示导致内存泄漏
- 29. WCF调用导致内存泄漏
- 30. 将ExecutorService.newFixedThreadPool.submit(新类())导致内存泄漏?
不幸的是仍然有内存泄漏。看起来adView拥有活动参考。 –
我从来没有遇到过任何使用AdView的内存泄漏,我们都在使用DFP。你能确保你使用最新的播放服务。我肯定这是其他的东西,但不能没有看到一些源代码说。 –
您是否使用LeakCanary或堆转储测试应用程序?我正在使用最新的8.1.0播放服务 –