如何通过代码实现点击按钮触发App退至后台(模拟home键功能)
模拟Home键将App退至后台实现方案
错误原因
你使用的
finish(); System.exit(0);会直接销毁当前Activity并终止应用进程,属于完全退出应用的操作,无法实现仅退至后台保留运行状态的需求。
正确实现方式
两种常用实现方案,效果均和按下系统Home键一致:
方案1:调用系统桌面启动Intent
适配所有Android版本,点击后直接跳转至系统桌面,App转入后台运行:
Java 代码
// 在按钮点击回调中执行以下代码 Intent homeIntent = new Intent(Intent.ACTION_MAIN); homeIntent.addCategory(Intent.CATEGORY_HOME); homeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(homeIntent);
Kotlin 代码
// 在按钮点击回调中执行以下代码 val homeIntent = Intent(Intent.ACTION_MAIN) homeIntent.addCategory(Intent.CATEGORY_HOME) homeIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK startActivity(homeIntent)
方案2:直接将应用任务栈移至后台
无需跳转系统桌面,仅将当前应用的任务栈切到后台,下次点击应用图标可直接回到切后台前的页面:
Java 代码
// 参数传true表示无论当前栈顶是哪个Activity,都将整个任务栈移至后台 moveTaskToBack(true);
Kotlin 代码
moveTaskToBack(true)
注意事项
- 以上两种方案均不需要申请额外权限,属于系统开放的标准API
- 两种方案都不会销毁应用进程,应用的后台服务、缓存状态都会保留
内容的提问来源于stack exchange,提问作者andtompoi
相关产品推荐
相关产品推荐

