【问题标题】:Android - OnDestroy remove interstitial ad?Android - OnDestroy 删除插页式广告?
【发布时间】:2014-03-20 11:13:02
【问题描述】:

这个问题问得更多,但给出了不同的解决方案,老实说,我不知道这里的最佳做法是什么。

我有这样的插页式广告(Google Admob SDK):

private InterstitialAd interstitial;

但是,广告有点延迟,如果用户快速导航(在一两秒内),那么广告会显示在与我想要的不同的屏幕上,或者当应用程序已经在后台时更糟。

How to pause interstitial Ads when Android application goes to background? 显示一个不存在的函数(不再存在)。
When dismiss interstitial DFP ad on Android, the app crashes 使用的广告显然与我不同...这更好用吗?
programmatically close an Interstitial ad 只是说不可能取消。

我希望它只是取消onDestroy() 函数中的广告并暂停(或同时销毁)onPause() 函数中的广告。

这可能吗?任何解决方法或其他方法都可以,但我当然更喜欢干净的解决方案。

【问题讨论】:

    标签: android admob ads interstitial


    【解决方案1】:

    正如威廉指出的那样,您不应该在 onAdReceived 中显示它。我所做的是在 onAdReceived 中设置一个布尔标志,然后我有一个后台线程执行一个空的 while 循环(使用计时器)并在调用 show() 之前检查布尔值。

    我仍然调用 isLoaded(),但那时我确实知道它已加载。我不单独使用 isLoaded() 的原因是它必须在 UI 线程上运行,而且我不想在等待广告加载时阻塞 UI。

    【讨论】:

      【解决方案2】:

      您确实应该展示了一些代码,但从您的症状来看,我怀疑您是通过 AdListener 的 #onAdReceived 方法展示您的插页式广告。 不要这样做

      您应该改为在应用的自然断点处显示您的插页式广告。否则,您将获得所描述的行为并提供极差的用户体验。

      【讨论】:

      • 我确实将它加载到由 AdListener 触发的 onAdLoaded 函数中。这是不好的做法吗?请埃博拉特。应用程序中的点在某种程度上是一个断点:他们可以选择一个级别..
      • 是的,这是不好的做法。在自然断点处,如果您有一个添加调用#displayInterstitial。不要在广告网络提供广告后立即调用它。
      【解决方案3】:

      尝试在活动结束时使展示广告无效:

      @Override
      public void onAdClosed() {
          mInterstitialAd = null;
      }
      
      @Override
      public void onAdLoaded() {
          if (mInterstitialAd != null)
              mInterstitialAd.show();
          mInterstitialAd = null;
      }
      
      @Override
      public void onAdFailedToLoad(int errorCode) {
          mInterstitialAd = null;
      }
      
      onDestroy / onStop() {
          mIntertitial = null;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多