I am doing it this way (note the AdRequest and load() are done in one place) and it seems to work for repeated use.
Note: it is important not to store references to objects in static variables in other classes on android (they can get garbage collected).
private InterstitialAd adObject = null;
onResume():
adObject = new InterstitialAd(activity, APP_ID);
// ad request and show() cycle ..
{
// request ad
{
// Create ad request
AdRequest adRequest = new AdRequest();
// Begin loading your interstitial
adObject.loadAd(adRequest);
}
// some time passes ..
// later you do ..
if (adObject.isReady()) {
adObject.show();
}
}
onPause()
adObject.stopLoading();
adObject = null;