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
相关产品推荐
相关产品推荐

