Android 系统设置拉起后台非全屏应用不隐藏前台应用
一、前言
Android 原生流程中,如果切换后台应用界面,会先执行返回Home界面,再切换到新的应用界面;
验证方法:手机打开一个应用1界面,底部往上滑,切换一个之前的后台应用2到前台,左右滑动退出应用2,发现回到的是Home界面而不是应用1界面。
原生在startActivityFromRecent时,先回到Home了 。
但是Android 大屏设备,一般是需要显示多个应用,界面部分应用都是悬浮Activity,理想效果是:不返回Home界面,直接拉起后台应用。
下面是实现的代码,其实就是在关键方法返回就行。
二、拉起后台非全屏应用不隐藏前台应用实现代码
framework\base\services\core\java\com\android\server\wm\TaskDisplayArea.java
void moveHomeRootTaskToFront(String reason) {
boolean isNeedBackHome = android.os.SystemProperties.getBoolean(
"persist.debug.isNeedBackHome", false);
if (!isNeedBackHome) { //直接返回,就不会往下执行到Home操作
return;
}
final Task homeRootTask = getOrCreateRootHomeTask(); //会新建一个Home界面栈
if (homeRootTask != null) {
homeRootTask.moveToFront(reason);
}
}
这里一般使用prop属性控制,因为有些特殊应用的界面处理,还是要先把其他应用拉到后台的。
具体流程其实不太清楚,这个只是简单记录一下。