如何在Android上设置活动后退堆栈?

时间:2019-05-31 08:35:58

标签: android android-intent

我想设置onBackPress按钮以启动有序启动的活动。如果我没有完成在开始另一个活动之前开始的活动,则可以使用finish()当前活动显示之前开始的活动。这个有可能。因为我没有完成任何活动。因此,finish()当前活动将导致之前开始的show活动。但是,RAM可能会在我打开50个活动时过载。因此由于这个问题,我需要完成之前开始的finish()活动。另一方面,单击后退按钮时,我想启动有序启动的活动。例如

   ActivityA --> ActivityB --> ActivityC --> ActivityD

在这种情况下,我按顺序完成ActivityA,ActivityB和ActivityC。但是我想在按下ActivityD时启动ActivityC,而我想在按下ActivityC时启动ActivityB。

最后,我在应用程序中有一条复杂的路径。而且,我导航到ActivityD并在当前活动为ActivityF时完成了ActivityF

 ActivityF --> ActivityD
 ActivityF finished

当前活动:

 ActivityD

在这种情况下,我想启动ActivityF而不是ActivityD的后退按钮上的ActivityC。

通常:

 ActivityA --> ActivityB --> ActivityC --> ActivityD /// click back button
 ActivityA --> ActivityB --> ActivityC /// click back button
 ActivityA --> ActivityB /// click back button
 ActivityA

 ActivityA --> ActivityF --> ActivityD /// click back button
 ActivityA --> ActivityF /// click back button
 ActivityA

但是我想生成这种情况:

 ActivityA
 --> ActivityB
 --> ActivityC
 --> ActivityD /// click back button
 ActivityC <-- /// click back button
 ActivityB <-- /// click back button
 ActivityA 

 ActivityA
 --> ActivityF
 --> ActivityD /// click back button
 ActivityF <-- /// click back button
 ActivityA <--

更新

我找到了解决方法here

2 个答案:

答案 0 :(得分:0)

在活动A中执行此操作

startActivity(new Intent(ActivityA.this, ActivityB.class));
    finish();

当移至活动B时,这将完成ActivityA

接下来,在ActivityB中覆盖您的Activity类中的onBackPressed,并使用一种意图恢复到先前的活动。

@Override
public void onBackPressed() {
startActivity(new Intent(ActivityB.this, ActivityA.class));
finish();
}

注意:

  

如果您不覆盖onBackPressed,则它将转到ActivityA之前的活动(如果无法从应用退出)。

可能会帮助您入门活动生命周期的链接:

答案 1 :(得分:0)

Intent i = new Intent(F.this, A.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP |Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);

Intent i = new Intent(F.this, A.class);
startActivity(i);
finish();