我正在使用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播放服務 –