Android & AdMob: Кога да извикате AdView.loadAd

кога е „най-добрият момент“ за зареждане на нова реклама от AdMob?

Програмирам приложение за списък за пазаруване, което има 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 Добре, но изчезва, ако се върнете към активност, защо?

В жизнения цикъл на активността 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