如何加载AdMob非页内广告只有一项活动?

时间:2018-01-16 07:37:20

标签: android admob interstitial

现在我正在处理一个包含插页式广告的应用,但我面临的一个问题是,我想在每2分钟后仅在MainActivity中展示广告,当我继续进行下一个活动时,它将会停止。对于这个实现,我做了类似的事情,

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());
}

2 个答案:

答案 0 :(得分:0)

首先创建一个全局引用:

boolean isActivityIsVisible = true;

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

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

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

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

检查插页式广告中的活动是否可见,如果可见则显示。

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

希望它有所帮助。

答案 1 :(得分:0)

How to stop a ScheduledExecutorService?

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

中再次启动它