Android - OnDestroy删除插页式广告?

时间:2014-03-20 11:13:03

标签: android admob advertising interstitial

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

我有这样的插页式广告(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()功能中的广告。

这可能吗?任何变通方法或不合适的方法,但我当然更喜欢干净的解决方案。

3 个答案:

答案 0 :(得分:3)

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

我仍然调用isLoaded(),但在那一点上我知道它已经加载了。我不仅仅使用isLoaded()的原因是因为它必须在UI线程上运行,我不想在等待广告加载时阻止UI。

答案 1 :(得分:1)

你应该真的展示了一些代码,但是根据你的症状,我怀疑你是从AdListener的#onAdReceived方法展示你的非页内广告。 不要这样做

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

答案 2 :(得分:-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;
}