在重新加载间隙广告之前,设置几秒钟的延迟



当广告加载失败时,我想在重新加载广告时设置/添加延迟。我认为这可以用Looper.getMainLooper((来完成,但我不知道该怎么做。你可以看到,我已经实现了,如果广告加载失败,它将被重新加载多达5次,所以我认为在重新加载广告之前添加延迟可能是一个不错的选择。

这是我的代码:

@Override
protected void onResume() {
super.onResume();
requestNewInterstitial(5);
}


private void requestNewInterstitial(int maxRetry) {
AdRequest adRequest = new AdRequest.Builder().build();
InterstitialAd.load(Activityone.this, getString(R.string.interid),
adRequest, new InterstitialAdLoadCallback() {
@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
mInterstitialAd = interstitialAd;
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {

if (maxRetry>0){

/*HERE IS WHERE THE AD IS RELOADED, SO THE DELAY COULD BE SET HERE BEFORE 
CALLING THE REQUEST NEW INTERSTITIAL FUNCTION*/
mInterstitialAd = null;
requestNewInterstitial(maxRetry-1);


}
});
}

}


btnPause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

if (mInterstitialAd != null) {
mInterstitialAd.show(Activityone.this);
mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback() {
@Override
public void onAdDismissedFullScreenContent() {

}
@Override
public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
}
});

我试过这样做。

if (maxRetry>0){

//add a delay before retrying
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
requestNewInterstitial(maxRetry-1);
}
}, 1000);
}

希望这能解决你的问题。

您可以使用一个简单的Handler来延迟这样的函数:
(Kotlin版本,但您已经明白了(

private fun reloadInterstitialAd() {
if (maxRetry > 0) {
val delayTime = 5000L // 5 seconds.
val looper = mainLooper // Use `Looper.getMainLooper()` if you do not have access to an Activity context.
mInterstitialAd = null
Handler(looper).postDelayed({
maxRetry--
requestNewInterstitial(maxRetry)
}, delayTime)
} else {
Log.d(TAG, "Max reload reached")
}
}

onAdFailedToLoad回调中的reloadInterstitialAd()一样使用此函数。

您可以使用此

Thread.sleep(delay_time_in_milliseconds);

最新更新