所以我有一个领域:
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'
如何防止这种情况发生?
答案 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);
}
希望这有帮助!