我想设置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
答案 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();