我必须在Activity上每20秒加载一次插页式广告。我有两个名为MainActivity和ListenActivity的活动。在这两个活动中,我都编写了以下相同的代码:
private final String TAG = "RedFM_AdsDemoActivity";
private InterstitialAd interstitialListen;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ads_demo);
MobileAds.initialize(this, getString(R.string.google_ad_app_id));
// Create the InterstitialAd and set the adUnitId.
interstitialListen = new InterstitialAd(this);
// Defined in res/values/strings.xml
interstitialListen.setAdUnitId(getString(R.string.admob_interstitial_id_google));
interstitialListen.loadAd(new AdRequest.Builder().build());
interstitialListen.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
loadInterstitial();
}
});
resumeGame(20000);
}
private static final long GAME_LENGTH_MILLISECONDS = 20000;
public CountDownTimer countDownTimer;
public boolean gameIsInProgress;
public void createTimer(final long milliseconds) {
// Create the game timer, which counts down to the end of the level
// and shows the "retry" button.
if (countDownTimer != null) {
countDownTimer.cancel();
}
countDownTimer = new CountDownTimer(milliseconds, 1000) {
@Override
public void onTick(long millisUnitFinished) {
}
@Override
public void onFinish() {
gameIsInProgress = false;
showInterstitial();
}
};
}
public void showInterstitial() {
// Show the ad if it's ready. Otherwise toast and restart the game.
if (interstitialListen != null && interstitialListen.isLoaded()) {
interstitialListen.show();
} else {
loadInterstitial();
}
}
public void loadInterstitial() {
// Request a new ad if one isn't already loaded, hide the button, and kick off the timer.
if (!interstitialListen.isLoading() && !interstitialListen.isLoaded()) {
System.out.println(TAG + "Listen ads loaded");
AdRequest adRequest = new AdRequest.Builder().build();
interstitialListen.loadAd(adRequest);
} else
System.out.println(TAG + "Listen ads not loaded");
resumeGame(GAME_LENGTH_MILLISECONDS);
}
public void resumeGame(long milliseconds) {
// Create a new timer for the correct length and start it.
System.out.println(TAG + "Listen resumeGame called ");
gameIsInProgress = true;
createTimer(milliseconds);
countDownTimer.start();
}
@Override
protected void onPause() {
super.onPause();
if (countDownTimer != null)
countDownTimer.cancel();
}