了解intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
LEGENDS:
x - > finish();在startActivity(Intent)之后;
< - x - > finish();在startActivity(Intent)之后;如果按下后退按钮,则完成()这个并创建一个startActivity(Intent)返回
- > startActivity(Intent)未完成
------------------------
这是我的图表:
x - > B < - x - > C < - x - > D - > E x - > F
在F Activity上,有一个重试和退出按钮。 如果按下retryButton,则完成F活动,这将导致返回D活动,因为它未完成。
问题
如果按下exitButton,请完成ActivityF和NEW intent.startActivity(ActivityC);
因为ActivityC是一个新的Intent,它将成为TOP ACTIVITY,FLAG_ACTIVITY_CLEAR_TOP不会做任何事情。
问题是我也想完成ActivityD,这样当我到达ActivityB并按下后退按钮时它会问我是否要退出程序,如果是,则完成()ActivityB ...
但是,当我这样做时,ActivityD仍在使用。因为这个ActivityD有可能被重叠,可能对内存不利(我想?)无论如何要关闭ActivityD?
答案 0 :(得分:0)
这是ans。我有同样的情况......尝试这个解决方案。这将清除堆栈中的所有顶级活动。
Intent i = new Intent(mContext,LoginActivity_IDY.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK |Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION );
overridePendingTransition(0, R.anim.slide_right);
startActivity(i);
finish();