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>
流程验证
- 启动应用进入Launcher Activity,交互后跳转游戏,Launcher被销毁
- 游戏中按返回键,应用退到后台,游戏Activity保持存活状态
- 再次打开应用,直接回到游戏的当前界面,无需重新加载资源
内容的提问来源于stack exchange,提问作者Bungles
相关产品推荐
相关产品推荐

