2015-11-03 7 views
9

Я использую AdView и LeakCanary. Фрагмент, в котором размещается adView, вызывает adView.destroy() в onDestroy, но LeakCanary показывает, что Activity, в котором размещен этот фрагмент, просачивается com.google.android.gms.common.api.a.a.a.i . Сброс кучи также показывает, что есть утечка памяти. Когда я удаляю AdView.loadAd() и не загружаю Ad в фрагмент - утечки нет. Любые мысли или предложения? Благодарю.AdView вызывает утечку памяти

ответ

1

Вы можете попробовать следующее:

  • переместить логику в onDestroyView()
  • первый удалить adView из контейнера и затем вызвать уничтожить(), т.е.

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

К сожалению, до сих пор происходит утечка памяти. Похоже, что adView имеет ссылку на активность. –

+0

Я никогда не сталкивался с утечками памяти с помощью AdView, и мы используем DFP по всему миру. Можете ли вы убедиться, что используете новейшие сервисы Play. Я уверен, что это что-то другое, но не могу сказать, не видя какого-то исходного кода. –

+0

Вы тестировали приложения с помощью LeakCanary или сваливанием кучи? Я использую последние 8.1.0 игровые сервисы –

6

Такая же проблема, у AdView есть внутренняя переменная (сильная ссылка), удерживающая контекст, который является моим Activit y, вызывая утечку экземпляра Activity.

Моя зависимость является com.google.android.gms:play-services-ads:8.3.0

обходной путь является обеспечение контекста приложения при создании экземпляра AdView.

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

Но если мы используем adView в XML, тогда это невозможно сделать. Я пробовал уничтожить adView onDestroy, но не помог. –

+0

@Funkyidol ya layout inflater, скорее всего, обеспечивает активность как контекст AdView в layout xml. Добавление представления в группу просмотра программно не так уж ужасно. – dvd

+0

Это единственное, что исправило это для меня. Позор, что я не могу добавить его в макет XML сейчас ... – eliasbagley