Select platform: [Android (beta)
![New](https://developers.google.com/static/admob/images/new.svg)](https://developers.google.com/ad-manager/mobile-ads-sdk/android/next-gen/interstitial "View this page for the Android (beta) platform docs.") [Android](https://developers.google.com/ad-manager/mobile-ads-sdk/android/interstitial "View this page for the Android platform docs.") [iOS](https://developers.google.com/ad-manager/mobile-ads-sdk/ios/interstitial "View this page for the iOS platform docs.") [Unity](https://developers.google.com/ad-manager/mobile-ads-sdk/unity/interstitial "View this page for the Unity platform docs.") [Flutter](https://developers.google.com/ad-manager/mobile-ads-sdk/flutter/interstitial "View this page for the Flutter platform docs.")

<br />

![](https://developers.google.com/static/admob/images/format-interstitial.svg)

Interstitial ads are full-screen ads that cover the interface of their host app.
They're typically displayed at natural transition points in the flow of an app,
such as between activities or during the pause between levels in a game.
When an app shows an interstitial ad, the user has the choice to either tap on
the ad and continue to its destination or close it and return to the app.


This guide explains how to integrate interstitial ads into an Android
app.

## Prerequisites

- Google Mobile Ads SDK 19.7.0 or higher.
- Complete the [Get started guide](https://developers.google.com/ad-manager/mobile-ads-sdk/android/quick-start).

## Always test with test ads

When building and testing your apps, make sure you use test ads rather than
live, production ads. Failure to do so can lead to suspension of your account.

The easiest way to load test ads is to use our dedicated test ad unit ID for
Android interstitials:

`/21775744923/example/interstitial`

It's been specially configured to return test ads for every request, and you're
free to use it in your own apps while coding, testing, and debugging. Just make
sure you replace it with your own ad unit ID before publishing your app.

For details on Google Mobile Ads SDK test ads, see
[Enable test ads](https://developers.google.com/ad-manager/mobile-ads-sdk/android/test-ads).

## Load an ad

| **Note:** Make all calls to the Mobile Ads SDK on the main thread.

To load an interstitial ad, call the `AdManagerInterstitialAd`
static
[`load()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/interstitial/InterstitialAd#load(android.content.Context,java.lang.String,com.google.android.gms.ads.AdRequest,com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback)) method and pass in an
`AdManagerInterstitialAdLoadCallback` to receive the loaded
ad or any possible errors. Notice that like other format load callbacks,
`AdManagerInterstitialAdLoadCallback` leverages
`LoadAdError` to provide higher fidelity error details.  

### Java

    AdManagerInterstitialAd.load(
        this,
        AD_UNIT_ID,
        new AdManagerAdRequest.Builder().build(),
        new AdManagerInterstitialAdLoadCallback() {
          @Override
          public void onAdLoaded(@NonNull AdManagerInterstitialAd interstitialAd) {
            Log.d(TAG, "Ad was loaded.");
            MyActivity.this.interstitialAd = interstitialAd;
          }

          @Override
          public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
            Log.d(TAG, loadAdError.getMessage());
            interstitialAd = null;
          }
        });  
    https://github.com/googleads/googleads-mobile-android-examples/blob/6252f89e35ae5b73053ed3f74bf551114920b7ad/java/admanager/InterstitialExample/app/src/main/java/com/google/android/gms/example/interstitialexample/MyActivity.java#L223-L296

### Kotlin

    AdManagerInterstitialAd.load(
      this,
      AD_UNIT_ID,
      AdManagerAdRequest.Builder().build(),
      object : AdManagerInterstitialAdLoadCallback() {
        override fun onAdLoaded(interstitialAd: AdManagerInterstitialAd) {
          Log.d(TAG, "Ad was loaded.")
          this@MyActivity.interstitialAd = interstitialAd
        }

        override fun onAdFailedToLoad(adError: LoadAdError) {
          Log.d(TAG, adError.message)
          interstitialAd = null
        }
      },
    )  
    https://github.com/googleads/googleads-mobile-android-examples/blob/6252f89e35ae5b73053ed3f74bf551114920b7ad/kotlin/admanager/InterstitialExample/app/src/main/kotlin/com/google/android/gms/example/interstitialexample/MyActivity.kt#L150-L180


| **Tip:** You can use ad load calls to build up a cache of preloaded ads before you intend to show them, so that ads can be shown with zero latency when needed. Since ads expire after an hour, you should clear this cache and reload with new ads every hour.

<br />

## Set the FullScreenContentCallback

The `FullScreenContentCallback` handles events related to displaying your
`InterstitialAd`. Before showing `InterstitialAd`, make sure to set the
callback:  

### Java

    interstitialAd.setFullScreenContentCallback(
        new FullScreenContentCallback() {
          @Override
          public void onAdDismissedFullScreenContent() {
            // Called when fullscreen content is dismissed.
            Log.d(TAG, "The ad was dismissed.");
            // Make sure to set your reference to null so you don't
            // show it a second time.
            MyActivity.this.interstitialAd = null;
          }

          @Override
          public void onAdFailedToShowFullScreenContent(AdError adError) {
            // Called when fullscreen content failed to show.
            Log.d(TAG, "The ad failed to show.");
            // Make sure to set your reference to null so you don't
            // show it a second time.
            MyActivity.this.interstitialAd = null;
          }

          @Override
          public void onAdShowedFullScreenContent() {
            // Called when fullscreen content is shown.
            Log.d(TAG, "The ad was shown.");
          }

          @Override
          public void onAdImpression() {
            // Called when an impression is recorded for an ad.
            Log.d(TAG, "The ad recorded an impression.");
          }

          @Override
          public void onAdClicked() {
            // Called when ad is clicked.
            Log.d(TAG, "The ad was clicked.");
          }
        });  
    https://github.com/googleads/googleads-mobile-android-examples/blob/6252f89e35ae5b73053ed3f74bf551114920b7ad/java/admanager/InterstitialExample/app/src/main/java/com/google/android/gms/example/interstitialexample/MyActivity.java#L236-L273

### Kotlin

    interstitialAd?.fullScreenContentCallback =
      object : FullScreenContentCallback() {
        override fun onAdDismissedFullScreenContent() {
          // Called when fullscreen content is dismissed.
          Log.d(TAG, "Ad was dismissed.")
          // Don't forget to set the ad reference to null so you
          // don't show the ad a second time.
          interstitialAd = null
        }

        override fun onAdFailedToShowFullScreenContent(adError: AdError) {
          // Called when fullscreen content failed to show.
          Log.d(TAG, "Ad failed to show.")
          // Don't forget to set the ad reference to null so you
          // don't show the ad a second time.
          interstitialAd = null
        }

        override fun onAdShowedFullScreenContent() {
          // Called when fullscreen content is shown.
          Log.d(TAG, "Ad showed fullscreen content.")
        }

        override fun onAdImpression() {
          // Called when an impression is recorded for an ad.
          Log.d(TAG, "Ad recorded an impression.")
        }

        override fun onAdClicked() {
          // Called when ad is clicked.
          Log.d(TAG, "Ad was clicked.")
        }
      }  
    https://github.com/googleads/googleads-mobile-android-examples/blob/6252f89e35ae5b73053ed3f74bf551114920b7ad/kotlin/admanager/InterstitialExample/app/src/main/kotlin/com/google/android/gms/example/interstitialexample/MyActivity.kt#L222-L254

## Show the ad

Interstitial ads should be displayed during natural pauses in the flow of an app.
Between levels of a game is a good example, or after the user completes a task.
To show an interstitial, use the
[`show()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/interstitial/InterstitialAd#show(android.app.Activity)) method.  

### Java

    if (interstitialAd != null) {
      interstitialAd.show(this);
    } else {
      Log.d(TAG, "The interstitial ad is still loading.");
    }  
    https://github.com/googleads/googleads-mobile-android-examples/blob/6252f89e35ae5b73053ed3f74bf551114920b7ad/java/admanager/InterstitialExample/app/src/main/java/com/google/android/gms/example/interstitialexample/MyActivity.java#L303-L313

### Kotlin

    interstitialAd?.show(this)  
    https://github.com/googleads/googleads-mobile-android-examples/blob/6252f89e35ae5b73053ed3f74bf551114920b7ad/kotlin/admanager/InterstitialExample/app/src/main/kotlin/com/google/android/gms/example/interstitialexample/MyActivity.kt#L258-L258

## Some best practices

Consider whether interstitial ads are the right type of ad for your app.
:   Interstitial ads work best in apps with natural transition points.
    The conclusion of a task within an app, like sharing an image or completing a
    game level, creates such a point. Make sure you consider at which points in your
    app's workflow you'll display interstitial ads and how the user is likely to
    respond.

Remember to pause the action when displaying an interstitial ad.
:   There are a number of different types of interstitial ads: text, image,
    video, and more. It's important to make sure that when your app displays an
    interstitial ad, it also suspends its use of some resources to allow the ad to
    take advantage of them. For example, when you make the call to display an
    interstitial ad, be sure to pause any audio output being produced by your app.

Allow for adequate loading time.
:   Just as it's important to make sure you display interstitial ads at an
    appropriate time, it's also important to make sure the user doesn't have to
    wait for them to load. Loading the ad in advance by calling
    [`load()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/interstitial/InterstitialAd#load(android.content.Context,java.lang.String,com.google.android.gms.ads.AdRequest,com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback)) before you intend to call
    `show()` can ensure that your app has a fully loaded interstitial ad at the
    ready when the time comes to display one.

Don't flood the user with ads.
:   While increasing the frequency of interstitial ads in your app might seem
    like a great way to increase revenue, it can also degrade the user experience
    and lower clickthrough rates. Make sure that users aren't so frequently
    interrupted that they're no longer able to enjoy the use of your app.

## Examples on GitHub

- Interstitial ads example: [Java](https://github.com/googleads/googleads-mobile-android-examples/tree/main/java/admanager/InterstitialExample) \| [Kotlin](https://github.com/googleads/googleads-mobile-android-examples/tree/main/kotlin/admanager/InterstitialExample)

## Next steps

- Learn more about [ad targeting](https://developers.google.com/ad-manager/mobile-ads-sdk/android/targeting).
- Learn more about [user privacy](https://developers.google.com/ad-manager/mobile-ads-sdk/android/privacy).
- Explore [optimized SDK initialization and ad loading
  (beta)](https://developers.google.com/ad-manager/mobile-ads-sdk/android/optimize-initialization).