在Android 11中,当使用singleInstance启动模式启动Activity时,系统确实会清理上一个任务栈。这意味着,如果从Activity1使用singleInstance启动模式启动Activity2,然后将应用滑至后台管理视图,再返回应用,滑至后台管理视图时Activity1会经历onDestroy。这是因为singleInstance活动被视为一个独立的任务,它总是在自己的任务栈中运行,并且不会与其他活动共享任务栈。
要实现类似于【TT语音】应用的效果,即进入房间后返回手势回到前个页面,再通过应用内的悬浮窗进入房间,你可以尝试以下方法:
- 使用singleTask或singleTop启动模式而不是singleInstance模式。这两种模式不会创建一个新的任务栈,而是将活动附加到现有的任务栈中。这样,当用户返回应用时,系统会恢复正确的活动状态。
- 在Activity2中实现一个特定的逻辑来处理用户的返回手势。你可以在Activity2的onBackPressed()方法中编写逻辑,以便在用户执行返回手势时,将系统导航到前一个活动(即Activity1)。例如:
@Override
public void onBackPressed() {
// 编写逻辑来处理返回手势
Intent intent = new Intent(this, Activity1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
- 如果你希望在Activity2处于前台运行时,通过home键返回桌面再进入应用时能够直接进入Activity2,而不是先进入Activity1,你可以在Activity2的onResume()方法中编写逻辑。例如:
@Override
protected void onResume() {
super.onResume();
// 编写逻辑来处理返回桌面再进入应用的情况
if (!isTaskRoot()) {
Intent intent = getIntent();
finish();
startActivity(intent);
}
}
这些方法可以帮助你实现类似于【TT语音】应用的效果,通过特定的逻辑来处理用户的操作和系统导航。记得在实际应用中进行测试和调整,以确保效果符合你的需求。