title: Android MobileAds loads ad too long
body: <p>I want my Android application to display ad – <code>InterstitialAd</code>. I want it appears after the welcome screen. It means that I have WelcomeActicity that appears on app start, and recently after this – the ad is displayed. </p>
  
  <p>I create <code>InterstitialAd</code> and start loading ad in application’s <code>OnCreate()</code> method. If application was closed for the long time, ad loads for more then 13 seconds. Of course this is inappropriate – user should not wait for so long. I made this tests building release apk that was directly installed on my phone Xiaomi Redmi 4X.</p>
  
  <p>So the question is – should it be done in some other way? Or ad is always loaded for the long time and I just need to move it forward in user’s workflow?</p>
  
  <p>In app's <code>OnCreate()</code> I start loading</p>
  
  <pre><code>public class MyApp extends Application {
  
      private FullScreenAd mFullScreenAd;
  
      @Override
      public void onCreate() {
          super.onCreate();
          mFullScreenAd = new FullScreenAd(this);
          mFullScreenAd.loadAd();
      }
  }
  </code></pre>
  
  <p>Implementation is the following:</p>
  
  <pre><code>public class FullScreenAd{
  
      private static final String APP_AD_ID = "ca-app-pub-3940256099942544~3347511713";
      private static final String SCREEN_AD_ID = "ca-app-pub-3940256099942544/1033173712";
  
      private String mAdAppId;
      private String mAdScreenId;
      private InterstitialAd mInterstitialAd;
  
      private long mLoadStart;
  
      public FullScreenAd(Context context) {
          super();
          DebugLogger.d();
  
          mContext = context;
          initAdIDs(null, null);
      }
  
      private void initAdIDs(String adAppId, String adScreenId) {
          DebugLogger.d();
  
          mAdAppId = (adAppId != null) ? adAppId : APP_AD_ID;
          mAdScreenId = (adScreenId != null) ? adScreenId : SCREEN_AD_ID;
  
          mInterstitialAd = new InterstitialAd(mContext);
          mInterstitialAd.setAdUnitId(mAdScreenId);
  
          setInterstitialAdListener();
      }
  
      public void loadAd() {
  
          // Initialize the Mobile Ads SDK.
          MobileAds.initialize(mContext, mAdAppId);
          AdRequest adRequest = new AdRequest.Builder()
                  .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                  .build();
  
          // Start loading the ad in the background.
          mAdIsLoaded.set(false);
          mInterstitialAd.loadAd(adRequest);
          mLoadStart = System.currentTimeMillis();
      }
  
      private void setInterstitialAdListener() {
          DebugLogger.d();
  
          mInterstitialAd.setAdListener(new AdListener() {
              @Override
              public void onAdLoaded() {
                  DebugLogger.d();
  
                  DebugLogger.d(String.format("Ad loaded in %d ms", System.currentTimeMillis() - mLoadStart));
  
                  mAdIsLoaded.set(true);
              }
  
          });
      }
  
     public void showAd(OnAdClosedAction action) {
          DebugLogger.d();
  
          mInterstitialAd.show();
     }
  }
  </code></pre>