AdMob - better performance in android activity

2019-03-29 13:38发布

问题:

I have android application where I implemented AdMob ads.

My layout code is very simple - added AdView into LinearLayout:

<com.google.ads.AdView
    android:id="@+id/adMob1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    ads:adSize="BANNER"
    ads:adUnitId="{AdID}" />

In MyActivity in onCreate() method I am calling:

    boolean showAdds = true;
    if(this.showAdds) {
        AdView adView = (AdView) findViewById(R.id.adMob1);
        adView.loadAd(new AdRequest());
    }

On some older android devices (tested for example on Samsung Galaxy S1) after AdMob implementation the app is very very slow. But when I set "showAdds" variable to "false" -> the loading of MyActivity is much better.

Is there any possibility to make the application with admob faster?

Thank you for all comments.

回答1:

I too have been struggling with AdView increasing app load time. My solution was to move the ad code into a delay handler (within onCreate)…

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
  @Override
  public void run() {
     AdRequest adRequest = new AdRequest.Builder().build();
     adView.loadAd(adRequest);
     adView.bringToFront();
  }
}, 5000);

So now the app starts quickly and then after 5s the adview is loaded. (p.s. .bringToFront is used because my app layout uses a mixture of XML and code, so this stops adView from being hidden)



回答2:

The adView loads a webview internally on first startup. It needs to create cookie stores etc. This will cost up to 2 seconds. If you load a webview before the adView it will benefit from it (maybe on your start up screen).

I found this hint here: https://groups.google.com/forum/#!topic/google-admob-ads-sdk/LdUVIZ2AW6M



回答3:

To improve the performance, use either ads:loadAdOnCreate="true" in the XML Implementation of your ad ( Then you wont need to call that java code, everything will be done from XML)

Else you can remove the boolean showadds. Maybe that is causing slowdown.

I have implemented the code without this showadds code and they work fine on Lower devices with fast adview shown.

More Info Here



回答4:

Move your adView initalization into background Thread.

 onCreate(){
       //..some other stuff

       Runnable runnableAdView = new Runnable() {
          @Override
          public void run() {
              initAdView();
          }
        };
       new Thread(runnableAdView).start();
 }

  private void initAdView() {

    // Create the adView
    adView = new AdView(this, AdSize.BANNER, getResources().getString(
            R.string.admob_id));

    // Lookup your LinearLayout assuming its been given

    LinearLayout layout = (LinearLayout) findViewById(R.id.sound_share_screen_ad_container);

    // Add the adView to it
    layout.addView(adView);

    // Initiate a generic request to load it with an ad
    AdRequest adRequest = new AdRequest();
    //adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
    //...

    adView.loadAd(adRequest);
}


标签: android admob