2017-09-01 73 views
0

所以我有一個領域:的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'

我怎樣才能防止這種情況出現?

回答

1

您可以嘗試添加標誌,並在展示廣告之前檢查廣告是否可用?

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

在按鈕點擊,您檢查廣告是否已經加載或活動正在排隊銷燬。

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

當然,我可以做到這一點。我期望更多admobish的答案,因爲根據文件,我的實施應該工作。此外,onDestroy()方法不保證被調用,並且還有標誌'activity.isDestroyed()' –

0

OnDestroy並不總是被調用,所以也使用OnPause,所以它們中的一個將被調用。在您的活動中,使用onPause方法銷燬廣告。添加這個代碼:

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

希望這有助於!

+0

感謝您的回覆,但我不想在用戶簡單地將屏幕最小化時銷燬廣告。這就是爲什麼在'onPause()'方法中調用'adMobAd.pause(this)'方法的原因。 –

+0

然後添加'onResume'方法並加載並在'onResume'方法中顯示它 – MrAppMachine

+0

這意味着您請求一個廣告並加載它,然後在用戶每次最大化屏幕時顯示,這是非常糟糕的模式。這就是爲什麼在'onResume()'方法中你應該調用'adMobAd.resume(this)'。 –