4

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

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

private InterstitialAd interstitial;

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

Android应用程序进入后台时如何暂停插页式广告?显示一个不存在的函数(不再存在)。
在 Android 上关闭插页式 DFP 广告时,应用崩溃时使用的广告显然与我不同......这更好用吗?
以编程方式关闭插页式广告只是说不可能取消它。

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

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

4

3 回答 3

3

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

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

于 2014-07-06T04:37:56.937 回答
1

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

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

于 2014-03-21T03:24:25.963 回答
-1

尝试此操作以在活动完成时使展示广告无效:

@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;
}
于 2017-11-03T15:05:02.897 回答