You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

插屏内嵌视频广告关闭时onAdDismissedFullScreenContent调用延迟求助

问题描述
  • 关闭内嵌视频格式的插屏广告时,onAdDismissedFullScreenContent方法调用存在2-3秒延迟
  • 该问题仅针对内嵌视频插屏广告,文本、图片、富媒体等其他插屏广告格式无此延迟
  • 带视频的插屏广告调用onAdClosed时同样存在延迟

关闭视频插屏广告延迟演示

代码实现

插屏广告加载代码

val activity = activityWeakRef.get()!!
AdManagerInterstitialAd.load(activity,
   APP_ID_ADS_INTER,
   AdManagerAdRequest.Builder().build(),
   object : AdManagerInterstitialAdLoadCallback() {

      override fun onAdLoaded(adManagerInterstitialAd: AdManagerInterstitialAd) {
         super.onAdLoaded(adManagerInterstitialAd)
         admInterstitialAd = adManagerInterstitialAd
      }

      override fun onAdFailedToLoad(loadAdError: LoadAdError) {
         super.onAdFailedToLoad(loadAdError)
         admInterstitialAd = null
      }
   })

插屏广告展示代码

admInterstitialAd!!.show(activityWeakRef.get()!!)
admInterstitialAd!!.fullScreenContentCallback = object : FullScreenContentCallback() {
   override fun onAdFailedToShowFullScreenContent(adError: AdError) {
      super.onAdFailedToShowFullScreenContent(adError)
   }

   override fun onAdShowedFullScreenContent() {
      super.onAdShowedFullScreenContent()
   }

   override fun onAdDismissedFullScreenContent() {
      AppLogger.d(">>>>>>>>>>>>>> delay when call this method")
      // Do back screen
      super.onAdDismissedFullScreenContent()
   }
}
解决方案

1. 修正回调设置时机

当前代码先调用show()再绑定fullScreenContentCallback,会导致广告启动后才关联回调,可能错过事件触发时机或影响响应速度。必须在调用show()前完成回调设置:

// 先设置回调,再展示广告
admInterstitialAd!!.fullScreenContentCallback = object : FullScreenContentCallback() {
   override fun onAdFailedToShowFullScreenContent(adError: AdError) {
      super.onAdFailedToShowFullScreenContent(adError)
   }

   override fun onAdShowedFullScreenContent() {
      super.onAdShowedFullScreenContent()
   }

   override fun onAdDismissedFullScreenContent() {
      AppLogger.d(">>>>>>>>>>>>>> delay when call this method")
      // Do back screen
      super.onAdDismissedFullScreenContent()
   }
}
admInterstitialAd!!.show(activityWeakRef.get()!!)

2. 升级Ad Manager SDK版本

低版本SDK可能存在视频广告回调延迟的已知Bug,建议升级到最新稳定版:
在项目build.gradle中更新依赖:

implementation 'com.google.android.gms:play-services-ads:22.6.0' // 替换为官方最新版本

3. 避免回调内执行耗时操作

如果onAdDismissedFullScreenContent中包含UI渲染、IO读写等耗时任务,会阻塞回调执行。确保回调内只做轻量操作,耗时任务放到子线程处理:

override fun onAdDismissedFullScreenContent() {
   AppLogger.d(">>>>>>>>>>>>>> delay when call this method")
   
   // 轻量UI操作直接在主线程执行
   CoroutineScope(Dispatchers.Main).launch {
       // Do back screen
   }
   
   // 耗时任务转至子线程
   CoroutineScope(Dispatchers.IO).launch {
       // 执行缓存清理、数据上报等耗时操作
   }
   
   super.onAdDismissedFullScreenContent()
}

4. 排查主线程阻塞问题

视频广告关闭后,SDK需要完成视频资源释放、缓存清理等操作,如果主线程被其他任务占用,会导致回调延迟。可以通过Android Studio的CPU Profiler排查主线程是否存在卡顿,优化占用主线程的业务逻辑。

5. 对比官方Demo验证

运行Google Ad Manager官方插屏广告Demo,对比是否存在同样延迟。如果Demo正常,说明问题出在项目代码或配置;如果Demo也有延迟,可提交反馈至Google Ads支持平台排查环境或广告源问题。

内容的提问来源于stack exchange,提问作者HaiHT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 14:30:58