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

更新AdMob SDK后StartActivity卡在进度对话框无法跳转页面

问题分析与解决方案

你的代码只处理了广告成功加载并正常关闭的场景,广告加载失败、广告显示失败这两个关键分支没有处理进度对话框(pd)的关闭和页面跳转逻辑,导致这两种情况发生时,进度框一直显示,页面卡住无法跳转。

具体修复步骤:

  • 处理广告加载失败场景:在onAdFailedToLoad回调中关闭进度对话框,直接执行页面跳转,避免用户长时间等待。
  • 处理广告显示失败场景:在onAdFailedToShowFullScreenContent回调中关闭进度对话框,然后执行页面跳转,保证即使广告无法展示,用户也能进入下一页。
  • 移除重复的进度框关闭操作:onAdLoaded中已经调用了pd.dismiss(),onAdDismissedFullScreenContent里的重复调用可以删除,避免潜在的UI异常。
  • (可选)添加错误日志:在错误分支中打印错误信息,方便后续排查广告相关问题。

修改后的完整代码:

//Start Here
AdRequest adRequest = new AdRequest.Builder().build();

InterstitialAd.load(StartActivity.this, StartActivity.this.getString(R.string.main_inter), adRequest,
        new InterstitialAdLoadCallback() {
            @Override
            public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
                pd.dismiss();
                mInterstitialAd = interstitialAd;
                mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback(){
                    @Override
                    public void onAdClicked() {
                        // 广告点击回调
                    }

                    @Override
                    public void onAdDismissedFullScreenContent() {
                        mInterstitialAd = null;
                        startActivity(new Intent(StartActivity.this, MainActivity.class));
                        StartActivity.this.finish();
                    }

                    @Override
                    public void onAdFailedToShowFullScreenContent(AdError adError) {
                        mInterstitialAd = null;
                        pd.dismiss();
                        // 打印错误日志,方便排查
                        Log.e("AdMob", "广告显示失败: " + adError.getMessage());
                        startActivity(new Intent(StartActivity.this, MainActivity.class));
                        StartActivity.this.finish();
                    }

                    @Override
                    public void onAdImpression() {
                        // 广告曝光回调
                    }

                    @Override
                    public void onAdShowedFullScreenContent() {
                        // 广告展示回调
                    }
                });
                mInterstitialAd.show(StartActivity.this);
            }

            @Override
            public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
                mInterstitialAd = null;
                pd.dismiss();
                // 打印错误日志,方便排查
                Log.e("AdMob", "广告加载失败: " + loadAdError.getMessage());
                startActivity(new Intent(StartActivity.this, MainActivity.class));
                StartActivity.this.finish();
            }
        });

补充说明:

修改后,无论广告加载成功、失败,还是显示失败,都能确保进度对话框被关闭,用户可以正常进入下一页。错误日志能帮助你快速定位广告加载或展示时的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:10:30