【问题标题】:How to load AdMob Interstitial ad only one activity?如何仅加载一项活动的 AdMob 插页式广告?
【发布时间】:2018-01-16 07:37:19
【问题描述】:

现在我正在开发一个包含插页式广告的应用程序,但我面临一个问题,即我希望每 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());
}

【问题讨论】:

  • 添加是否也在其他活动中显示??
  • 你有什么问题?
  • @MohdAsifAhmed ya 现在广告正在其他活动中展示,但我不想在其他活动中展示
  • @DhrutiMistry - 从理论上讲,您尝试实现的目标是可能的,但不允许实现 - 请参阅链接 support.google.com/admob/answer/…。您应该在活动中跟踪用户活动,并在 2 次点击后加载插页式广告

标签: android admob interstitial


【解决方案1】:

首先创建一个全局引用:

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

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

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

希望对你有帮助。

【讨论】:

【解决方案2】:

How to stop a ScheduledExecutorService?

只需在您的第一个活动的 onPause 方法中执行此操作。然后在 onCreate() 中再次启动

【讨论】:

  • 当我关闭 ScheduleExecutorService 时,它​​可以帮助我进行另一项活动,但在同一活动中,广告仅出现一次,而不是每 2 分钟一次。我该如何解决这个问题?
  • 在您的“相同活动” onCreate 方法中,您必须再次启用 ScheduledExecutorService
猜你喜欢
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 1970-01-01
相关资源
最近更新 更多