假设:
应用程序的流程: A->B->C(->D)->E->F
只有在活动C中遇到某个条件时,活动D才会打开。
TODO:
A->B->C->E->F
那么当我向后按压时,流程应为F->E->C->B->A
A->B->C->D->E->F
那么当我向后按压时,流程应为F->E->C->B->A
A->C->D->E->F
这里我们跳过B,因为活动B中没有视图,当我向后按压时,流程应为F-> E-> C-> ; A 我做了什么:
要在onCreate()中没有可用字段时跳过活动,我正在检查是否有任何字段是否可显示如果没有,那么我在堆栈中添加活动名称(如果它不存在)然后打开下一个活动。
// Block for skipping this screen
if (skipScreen) {
Intent i = new Intent(B.this, C.class);
startActivity(i);
finish();
} else {
if (!Constants.st.contains(B.class)) {
Constants.st.push(B.class);
}
}
当我从一个活动中按回来时,我会从堆栈中弹出()该活动的名称,并在堆栈顶部查看peek()并跳转到该活动。
public void onBackPressed() {
super.onBackPressed();
Constants.st.pop();
Intent i = null;
if (Constants.st.isEmpty()) {
i = new Intent(B.this, A.class);
} else {
Class<Activity> jumpTo = Constants.st.peek();
i = new Intent(B.this, jumpTo);
}
startActivity(i);
finish();
}