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

Android通过Application类实现interstitial ads加载及Activity跳转展示的方案咨询

插屏广告跳转展示实现方案

1. 自定义Application类预加载广告

首先在Application层维护全局的插屏广告实例,提前预加载保证跳转时广告可用:

  • 首先在AndroidManifest.xml中配置自定义Application:
    <application
        android:name=".MyApplication"
        ... 其他配置 >
        ... 四大组件配置
    </application>
    
  • 实现MyApplication类的预加载、展示逻辑(以下示例基于AdMob SDK,其他广告平台核心逻辑一致,替换对应广告API即可):
    public class MyApplication extends Application {
        private InterstitialAd mInterstitialAd;
        private Runnable mJumpAction;
    
        @Override
        public void onCreate() {
            super.onCreate();
            // 初始化对应广告SDK
            MobileAds.initialize(this, status -> {});
            // 启动时预加载第一次广告
            loadInterstitial();
        }
    
        // 加载插屏广告
        public void loadInterstitial() {
            AdRequest adRequest = new AdRequest.Builder().build();
            InterstitialAd.load(this, "你的广告单元ID", adRequest, new InterstitialAdLoadCallback() {
                @Override
                public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
                    mInterstitialAd = interstitialAd;
                    // 绑定广告生命周期监听
                    mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback() {
                        @Override
                        public void onAdDismissedFullScreenContent() {
                            // 广告被用户关闭后,先执行跳转逻辑,再预加载下一次广告
                            mInterstitialAd = null;
                            if (mJumpAction != null) {
                                mJumpAction.run();
                                mJumpAction = null;
                            }
                            loadInterstitial();
                        }
    
                        @Override
                        public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
                            // 广告展示失败,直接跳转,不阻塞用户
                            mInterstitialAd = null;
                            if (mJumpAction != null) {
                                mJumpAction.run();
                                mJumpAction = null;
                            }
                            loadInterstitial();
                        }
                    });
                }
    
                @Override
                public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
                    mInterstitialAd = null;
                }
            });
        }
    
        // 对外提供展示广告接口,入参为当前Activity和跳转逻辑的回调
        public void showAdIfReady(Activity currentActivity, Runnable jumpAction) {
            if (mInterstitialAd != null) {
                mJumpAction = jumpAction;
                mInterstitialAd.show(currentActivity);
            } else {
                // 广告未就绪,直接跳转
                jumpAction.run();
                // 同时触发广告重新加载,保证下次跳转可用
                loadInterstitial();
            }
        }
    }
    

2. 在Activity A中触发跳转逻辑

当需要从Activity A跳转到Activity B时,调用Application中封装好的广告展示方法,将跳转逻辑作为回调传入即可:

// 示例为跳转按钮的点击事件,你可以根据自己的触发场景调整
findViewById(R.id.go_to_b_btn).setOnClickListener(v -> {
    MyApplication app = (MyApplication) getApplication();
    app.showAdIfReady(ActivityA.this, () -> {
        // 执行跳转Activity B的逻辑
        Intent intent = new Intent(ActivityA.this, ActivityB.class);
        startActivity(intent);
    });
});

关键注意点

  • 禁止在广告未加载完成时阻塞用户跳转,所有异常场景都要优先保证用户操作流程正常
  • 广告展示频次不要过高,避免用户反感导致卸载
  • 若接入的是其他广告平台(比如穿山甲、优量汇),只需要替换广告加载、展示的对应API,整体流程完全通用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 22:15:05