Android и AdMob: когда вызывать AdView.loadAd

когда «лучший момент» для загрузки нового объявления из AdMob?

Я программирую приложение со списком покупок, на главном экране которого есть рекламный баннер.

Сначала я позвонил

 m_AdView.loadAd(new AdRequest());

в методе onCreate(). Но так у меня всегда показывалась одна и та же реклама.

Теперь я хочу поместить вызов в onResume(). Но нет ли шанса вызвать слишком большой сетевой трафик?


person Christian Graf    schedule 16.08.2012    source источник


Ответы (3)


Лучшее место для загрузки adMob — это onCreate(). Итак, я бы просто оставил это в методе onCreate(). Не беспокойтесь о том, какая реклама отображается, так как это то, что API AdMob говорит ему показывать. Он может находиться в тестовом режиме, поэтому, когда вы запустите его «вживую», он изменится. Тот факт, что вы получаете рекламу, означает, что она работает.

Вот что я сделал со своим приложением:

@Override
protected void onCreate(Bundle savedInstanceState)
{

    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.detail);

    AdView adView = (AdView)this.findViewById(R.id.adView2);
    AdRequest re = new AdRequest();
    adView.loadAd(re);
 ...
person BlackHatSamurai    schedule 16.08.2012
comment
Я не нашел никакой информации по этой теме ни в официальной документации admob, ни где-либо еще. Но во всех фрагментах кода loadAd вызывается в OnCreate. Но почему onCreate лучшее место? - person Christian Graf; 17.08.2012
comment
Потому что onCreate — это место, где создается приложение. Если вы поместите его в onResume, вы не поместите его в начало. Вот ссылка на жизненный цикл: developer.android.com/training/ basics/activity-lifecycle/ Надеюсь, это объяснит это немного лучше. В основном вы хотите запустить приложение admob при запуске приложения. - person BlackHatSamurai; 17.08.2012
comment
Вот в чем вопрос: ставить в начало или нет. Я знаком с жизненным циклом! - person Christian Graf; 18.08.2012
comment
Да, ты должен. Таким образом, это всегда называется творением. - person BlackHatSamurai; 18.08.2012

в официальной документации указано помещать loadAd() в onCreate(), поскольку вам также необходимо зарегистрировать AdActivity в своем манифесте:

<activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode"/>

Я предполагаю, что он будет придерживаться жизненного цикла вашей основной деятельности, поэтому правильно обрабатывает onPause() и onResume().

ИЗМЕНИТЬ

Согласно образцу admob, вы должны делегировать вызовы жизненного цикла Экземпляр AdView.

person comeGetSome    schedule 25.02.2014

Интересно то же самое (речь о баннере, а не об интерстициальном)

Большинство примеров, которые я нашел в сети, загружают запрос (adView.loadAd(new AdRequest())) в onCreate.

но может быть onStart:

public void onStart() {
    super.onStart();
    if(adView != null) {
        adView.loadAd(new AdRequest());
    }

в соответствии с: реклама AdMob в onCreate Хорошо, но исчезает, если вы вернетесь к активности, почему?

В жизненном цикле Activity OnStart вызывается сразу после onCreate

https://developer.android.com/guide/components/activities/activity-lifecycle.html

так что... я тоже думаю, что это хорошее место

person bitabit    schedule 31.12.2017
comment
Нет. Все, что они говорят об инициализации рекламы в onResume, относится и к onStart. OnStart вызывается после onCreate, но может быть вызван и без onCreate. - person Eugene Kartoyev; 31.07.2020