我正在使用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. SoundPlayer导致内存泄漏?
- 2. IntPtr导致内存泄漏?
- 3. pushViewController导致内存泄漏
- 4. glTexImage2D导致内存泄漏
- 5. CALayer导致内存泄漏?
- 6. Dispatcher.beginInvoke导致内存泄漏
- 7. strdup()导致内存泄漏?
- 8. URL.createObjectURL导致内存泄漏
- 9. uipickerview导致内存泄漏
- 10. Google AdMob Interstital Ad导致内存泄漏
- 11. fdopen()是否会导致内存泄漏?
- 12. MKMapView removeAnnotations导致内存泄漏
- 13. 这是否会导致内存泄漏?
- 14. 确实android.media.SoundPool导致内存泄漏?
- 15. QProgressBar :: setValue(int)导致内存泄漏?
- 16. MVVMLight EventToCommand导致内存泄漏
- 17. Iphone子串导致内存泄漏
- 18. UIAlertView显示导致内存泄漏
- 19. RxSwift`.addDisposableTo(disposeBag)`导致内存泄漏
- 20. 可能Array.splice导致内存泄漏?
- 21. 是否addEventListener导致内存泄漏?
- 22. 单击UISearchBar导致内存泄漏
- 23. pushviewcontroller在ARC中导致内存泄漏
- 24. UIImage setImage:导致内存泄漏
- 25. 使用jQuery.text()导致内存泄漏
- 26. 导致内存泄漏的jQuery代码
- 27. 这是否会导致内存泄漏?
- 28. Tomcat的ThreadWithAttributes导致内存泄漏
- 29. 字符串导致内存泄漏?
- 30. 这是否会导致内存泄漏?
不幸的是仍然有内存泄漏。看起来adView拥有活动参考。 –
我从来没有遇到过任何使用AdView的内存泄漏,我们都在使用DFP。你能确保你使用最新的播放服务。我肯定这是其他的东西,但不能没有看到一些源代码说。 –
您是否使用LeakCanary或堆转储测试应用程序?我正在使用最新的8.1.0播放服务 –