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

观看激励视频广告后应用异常返回首页的技术问题咨询

嘿,我来帮你捋捋这个问题!你遇到的这种部分机型上激励视频关闭后跳转到首个主Activity的情况,大概率和Activity启动模式、广告回调逻辑,或者系统内存回收导致的重启有关,我给你拆解几个可能的方向和解决办法:

可能的原因及对应解决方案

1. 检查Activity启动模式配置

很多时候这种异常跳转是因为Activity的启动模式没配置对。比如你的Quiz1Activity如果用了singleTask/singleInstance,或者首个主Activity的启动模式是singleTop/singleTask,广告关闭后系统可能会触发栈内Activity的重组。

  • 打开AndroidManifest.xml,确认Quiz1Activity的android:launchMode是默认的standard(如果被修改过,改回默认试试)。
  • 检查主Activity的启动模式,如果设了singleTask,看看是不是广告回调里不小心触发了主Activity的启动(比如误写了startActivity(new Intent(this, MainActivity.class)))。

2. 排查激励视频的回调逻辑

激励视频的关闭/奖励回调里的代码很可能是问题根源,你有没有在这些回调里做了Activity跳转或者finish当前页面的操作?

  • 仔细检查MobileAds相关的回调实现,比如:
@Override
public void onAdClosed() {
    // 这里有没有调用 finish() 或者跳转主Activity的代码?
    // 比如不小心写了 startActivity(new Intent(Quiz1Activity.this, MainActivity.class));
}

@Override
public void onUserEarnedReward(RewardItem rewardItem) {
    // 奖励发放后有没有异常的页面操作?
}
  • 建议在回调里加日志,比如Log.d("AD_DEBUG", "onAdClosed called, current activity: " + this.getClass().getSimpleName()),看看回调触发时当前Activity的状态,确认是不是回调里的逻辑导致了跳转。

3. 系统内存不足导致的Activity重启

如果应用在展示广告时被系统后台回收,广告关闭后系统会尝试恢复之前的Activity,但如果任务栈被破坏,就可能跳转到主Activity。

  • 在Quiz1Activity里重写onSaveInstanceState和onRestoreInstanceState方法,保存页面状态,看看是否触发了恢复逻辑:
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putBoolean("isAdShown", true); // 标记广告已展示
    Log.d("ACTIVITY_DEBUG", "onSaveInstanceState called");
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    boolean isAdShown = savedInstanceState.getBoolean("isAdShown", false);
    Log.d("ACTIVITY_DEBUG", "onRestoreInstanceState called, isAdShown: " + isAdShown);
    // 如果广告已展示,就不要再重复加载广告或做跳转
}
  • 同时检查onCreate方法,当savedInstanceState不为null时,说明是Activity被恢复,这时候不要重复初始化广告或执行页面跳转逻辑。

4. 广告SDK兼容性问题

不同厂商的定制系统对广告页面的处理可能有差异,试试以下操作:

  • 确保你用的是最新版本的Google Mobile Ads SDK,在build.gradle里更新依赖:
implementation 'com.google.android.gms:play-services-ads:22.6.0' // 替换成当前最新版本
  • 展示广告前,可以尝试把当前Activity的状态通过onSaveInstanceState提前保存,避免被系统回收。

5. 用adb排查任务栈状态

你可以通过adb命令查看广告关闭前后的Activity栈变化,确认是跳转还是重启:

adb shell dumpsys activity activities

对比广告关闭前后的栈结构,就能清楚看到是Quiz1Activity被销毁后栈顶变成主Activity,还是有主动跳转的操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:36:45