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

Android双Activity应用:如何让返回键回到上一应用而非前置Activity?

解决方案:优化游戏Activity返回行为与启动流程

一、跳转时销毁Launcher Activity

在Launcher Activity完成游戏跳转后,调用finish()销毁自身,将其从任务栈中移除。这样游戏Activity会成为任务栈内的唯一Activity,避免返回时退回到启动页。

Kotlin代码示例:

// LauncherActivity.kt 跳转逻辑
val gameIntent = Intent(this, GameActivity::class.java)
startActivity(gameIntent)
finish() // 销毁当前Launcher Activity

二、修改游戏Activity返回键行为,退到后台而非销毁

重写游戏Activity的返回键处理逻辑,调用moveTaskToBack(true)让整个应用退到后台,保留游戏Activity实例,不触发销毁操作。

针对NativeActivity的处理

由于NativeActivity是系统类,需要自定义子类来重写方法:

// 自定义NativeActivity子类
public class GameNativeActivity extends NativeActivity {
    @Override
    public void onBackPressed() {
        // 将应用任务移到后台,不销毁当前Activity
        moveTaskToBack(true);
    }
}

随后在AndroidManifest.xml中替换游戏Activity的声明:

<activity
    android:name=".GameNativeActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:label="@string/app_name">
    <!-- 保留原有intent-filter,注意不要设置为LAUNCHER -->
</activity>

三、配置启动模式确保后台唤起直接回到游戏

给游戏Activity设置singleTask启动模式,保证任务栈中仅存在一个游戏实例,再次打开应用时直接回到已存活的Activity,无需重建。

在AndroidManifest.xml中修改配置:

<activity
    android:name=".GameNativeActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:label="@string/app_name"
    android:launchMode="singleTask"> <!-- 添加启动模式配置 -->
    ...
</activity>

流程验证

  1. 启动应用进入Launcher Activity,交互后跳转游戏,Launcher被销毁
  2. 游戏中按返回键,应用退到后台,游戏Activity保持存活状态
  3. 再次打开应用,直接回到游戏的当前界面,无需重新加载资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:25:09