Страницы

Поиск по вопросам

суббота, 27 октября 2018 г.

Реклама съедает память устройства

Решил я попробовать добавить в одно своё Activity рекламу. Выбор упал на знаменитый AdMob. Всё сделал, реклама работает.
Прошло время, заметил, что приложение стало потреблять больше памяти. Методом поэтапного удаления выяснил, что источник проблем заключается как раз в рекламе, а точнее в нескольких строчках установки рекламы. Вот они сами:
AdView MyBanner = (AdView) findViewById(R.id.MyBanner_id);
MobileAds.initialize(getApplicationContext(), "ca-app-pub-XXX~YYY");
AdRequest adRequest = new AdRequest.Builder() .addTestDevice("ZZZ") .build(); MyBanner.loadAd(adRequest);
Profiler говорит, что без этих строк MEMORY 35mb , со строками 80mb
Вопрос: как иметь рекламу и не тратить так много памяти?


Ответ

AdMob использует WebView для загрузки объявлений. Это довольно ресурсоёмкий объект, который использует собственные библиотеки и подвержен сбоям. У вас нет никакого контроля над тем, как работает Admob SDK. Кроме того, использование памяти, вероятно, будет варьироваться в зависимости от типа объявления: тексты HTML и баннеры с изображениями и т.д.
Так же не стоит забывать про то, что нужно управлять жизненным циклом объявлений
@Override protected void onPostResume() { super.onPostResume();
mAdView.resume();
}
@Override protected void onPause() { super.onPause();
mAdView.pause();
}
@Override protected void onDestroy() { super.onDestroy();
mAdView.destroy();
}
Это должно помочь избежать утечек памяти. С объёмом используемой памяти остаётся только смириться. Можете почитать про AdMob подробнее перейдя по ссылке.

Комментариев нет:

Отправить комментарий