У меня есть тестовый проект, который демонстрирует утечку памяти, вызванную Admob 4.1.1.
Базовый сценарий: у меня есть два действия, и я несколько раз переключаюсь между основным и дополнительным действием. Затем я переключаюсь на DDMS и форсирую несколько GC. Затем сделайте дамп HPROF и посмотрите на гистограмму, отфильтрованную com.test*, чтобы увидеть, сколько существует основных и вспомогательных действий. Мои скриншоты гистограммы прилагаются:
Утечка!
Затем я закомментировал рекламу в xml и перезапустил, и утечек не было:
Теперь утечки нет
Я нашел несколько соответствующих сообщений об утечках Admob, например здесь: Android AdMob вызывает утечку памяти?
Вот список вещей, которые я пытался решить проблему:
- Подождите некоторое время, а затем запустите gc
- Не загружайте объявление в oncreate, а создайте поток для ожидания, а затем загрузите его.
- Пробовал предыдущую версию Admob (ту, что написана не Google)
- Вызывается adView.destroy() в методе действия onDestroy().
- Отвязка от этого ссылка
Очевидно, что ничего из этого не помогло.
Вот тестовый проект, который я написал:
(Обязательно задайте свой собственный идентификатор издателя при запуске тестового проекта)
загрузить проект тестовой утечки для Android
Если это имеет значение, я тестирую свой SGS2 с прошивкой Cyanogenmod.
Происходит ли это для других людей, когда они запускают этот проект?
Кто-нибудь знает причину, исправление или обходной путь?
Спасибо