我的申请流程:
登录 - >简介 - > UpdateProfile-> ChangePass
我的所有活动都扩展了FragmentActivity
当我在ChangePass活动中按下按钮时,我会调用此代码:
Intent intent=new Intent(getApplicationContext(),LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
所以它应该启动LoginActivity,当我从LoginActivity按回来时,应该关闭...但是当我按下Login Activity中的后退按钮时,流程是:
ChangePass-> UpdateProfile->简介 - >登录
为什么我的后台堆栈没有清除?
注意:
答案 0 :(得分:2)
尝试以下方式 -
Intent intent = new Intent(getActivity(), LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
finish();
有关更多替代方案和详细信息,请查看intent-flag-activity-clear-top-doesn't-deletes-the-activity-stack。该帖子完美地解释了结果代码和上述解决方案。
答案 1 :(得分:2)
虽然回复很晚 但是可能会帮助别人,因为它对我有用。
开发人员有时会将FLAG_ACTIVITY_CLEAR_TASK
与FLAG_ACTIVITY_CLEAR_TOP
使用此
intentRestart.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
答案 2 :(得分:0)
不要替换旧标志,而是尝试附加一个。 Setflag替换了theold标志。
尝试使用addFlags。
答案 3 :(得分:0)
清除任务并创建新任务。
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
这可能会在过渡时创建一个临时白屏。消除此缺陷。 将此添加到您的应用主题。
<item name="android:windowDisablePreview">true</item>
享受Android!