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.
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)
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
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
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);
}