AdMob RewardedVideoAd一直在后台运行

时间:2017-09-01 15:27:55

标签: android admob kotlin google-admob

所以我有一个领域:

private lateinit var adMobAd: RewardedVideoAd

我在onCreate()方法中初始化它:

adMobAd = MobileAds.getRewardedVideoAdInstance(this)

我在onDestroy()方法中销毁:

public override fun onDestroy() { adMobAd.destroy(this) super.onDestroy() }

但是当我点击按钮加载广告然后快速离开活动时,几秒钟后就会展示广告(我在onRewardedVideoAdLoaded()回调中展示了广告)。这是非常不好的行为,特别是当广告不可跳过时。当它完成时它也会调用回调,所以当然我遇到了崩溃。另外,我对我的奖励视频使用了一些调解,比如

implementation 'com.google.ads.mediation:adcolony:3.1.2.0' implementation 'com.google.ads.mediation:tapjoy:11.11.0.0' implementation 'com.google.ads.mediation:unity:2.1.0.0'

如何防止这种情况发生?

2 个答案:

答案 0 :(得分:1)

您可以尝试添加标记,并在展示广告之前检查广告是否可用?

fun onDestroy(){ isDestroyed =true  ...}

在按钮单击中,您可以检查广告是否已加载或活动是否正在排队等待销毁。

if(admobAd.isLoaded() && !isDestroyed){ admobAd.show() }

答案 1 :(得分:0)

OnDestroy并不总是被调用,因此也使用OnPause,因此将调用其中一个。在您的活动中,销毁onPause方法中的广告。添加以下代码:

@Override
protected void onPause() {
    super.onPause();
    adMobAd.destroy(this);
}

希望这有帮助!