如何仅加载一个 activity 的 AdMob Interstitial 广告?

How to load AdMob Interstitial ad only one activity?

现在我正在开发一个包含插页式广告的应用程序,但我面临一个问题,即我想在每 2 分钟后仅在 MainActivity 中显示广告,然后再继续activity将停止。对于这个实现我做了这样的事情,

prepareAd();
    ScheduledExecutorService scheduler =
            Executors.newSingleThreadScheduledExecutor();
    scheduler.scheduleAtFixedRate(new Runnable() {

        public void run() {
            Log.i("hello", "world");
            runOnUiThread(new Runnable() {
                public void run() {
                    if (mInterstitialAd.isLoaded()) {
                        mInterstitialAd.show();
                    }
                    prepareAd();
                }
            });
        }
    }, 1, 120, TimeUnit.SECONDS);

public void  prepareAd(){
    mInterstitialAd = new InterstitialAd(this);
    mInterstitialAd.setAdUnitId("ca-app-pub-xxxxxxxxxxxxxxxxx/xxxxxxxxxx");
    mInterstitialAd.loadAd(new AdRequest.Builder().build());
}

首先创建一个全局引用:

boolean isActivityIsVisible = true;

然后通过覆盖 activity 的生命周期来检查:

@Override
  protected void onPause() {
  super.onPause();
  isActivityIsVisible = false;
}

@Override
  protected void onResume() {
  super.onResume();
  isActivityIsVisible = true;
}

@Override
  protected void onStop() {
  super.onStop();
  isActivityIsVisible = false;
}

检查Activity在插屏广告回调中是否可见,如果可见则显示。

mInterstitialAd.setAdListener(new AdListener() {
    @Override
    public void onAdClosed() {
        prepareAd();
    }
    public void onAdLoaded(){
        if (isActivityIsVisible) { mInterstitialAd.show(); }
    }
});

希望对您有所帮助。

只需在第一个 activity 的 onPause 方法中执行此操作。然后在 onCreate()

中再次启动它