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); }
希望这可以帮助!
- RegisterResGeneratingTask已弃用,请使用registerGeneratedFolders(FileCollection)
- 如何用kotlin使用cursorloader
- 随播广告对象 – Android是否希望将其注册为活动(?)
- Kotlin为Android和静态最终的内部类
- 一堆在android studio中使用kotlin的错误
- Android Studio logcat保持运行
- Kotlin和Android TextWatcher具有CharSequence / String替换功能
- Android – RoomDb – 实体插入成功找不到另一个活动中的选择查询
- Kotlin Android Project无法同步Gradle项目