我有两个屏幕,A和B.屏幕A有一个启动活动B的按钮,屏幕B有一个启动活动A的按钮。
预期的行为是,如果活动在后台堆栈中可用,则应将其重新排序到前端而不创建新的活动。为此,我在两个活动的点击事件中添加了标志FLAG_ACTIVITY_REORDER_TO_FRONT。这是听众代码。
Button btn=(Button)findViewById(R.id.button);
final Activity activity=this;
btn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent intent=new Intent(activity,ScreenB.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
}
});
这是预期的。 A是第一个屏幕(在启动后,因此A不是启动器屏幕)。
此时,如果按下后退按钮,则应删除A并且B应该是可见的(理论上)。但是会发生什么,在后退按钮App上不再可见,并且移动设备的主发射器出现。如果我从最近的应用程序重新打开应用程序,它将在B处打开。这意味着当按下后退按钮时B必须在堆栈中,但是应用程序没有显示,而是显示移动启动器。
我还应该做些什么才能获得预期的行为?
我添加了用于测试的屏幕C(第3屏幕)
现在我有3个屏幕。所有人都有两个按钮来启动另外两个。