AdMob RewardedVideoAd一直在后台运行

所以我有一个领域:

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'

我怎样才能防止这种情况?

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

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

在按钮点击中,您检查广告是否已经被加载,或者活动是否被排队销毁。

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

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

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

希望这可以帮助!