所以我有一个字段:
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'
我怎样才能防止这种情况?
发布于 2017-09-01 23:42:07
您可以尝试添加一个标志,并检查广告是否可用,然后再显示广告?
fun onDestroy(){ isDestroyed =true ...}在单击按钮时,您可以检查广告是否已经加载,或者活动是否正在排队等待销毁。
if(admobAd.isLoaded() && !isDestroyed){ admobAd.show() }发布于 2017-09-02 00:28:44
OnDestroy并不总是被调用,所以也使用OnPause,所以它们中的一个将被调用。在您的活动中,销毁onPause方法中的广告。添加以下代码:
@Override
protected void onPause() {
super.onPause();
adMobAd.destroy(this);
}希望这能有所帮助!
https://stackoverflow.com/questions/46003531
复制相似问题