我有这个申请流程:
活动1->活性2->活性3->家庭活动
现在,当用户从Activity3切换到Home Activity时,我希望完成之前的所有活动。因此用户无法前往以前的活动。
我不想使用finish()
,因为所有3个活动都在填充。
我试过
Intent.FLAG_ACTIVITY_CLEAR_TOP
但它似乎不起作用
答案 0 :(得分:9)
正确的方法是使用意图标志FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_CLEAR_TASK。
Intent homeIntent=new Intent(this,HomeActivity.class);
homeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(homeIntent);
CLEAR_TASK将清除任务中的所有先前活动(如果有),并使新活动(HomeActivity)成为任务的根活动。该标志应与FLAG_ACTIVITY_NEW_TASK结合使用。
如果您在ActivityHome(正常情况下没有任何标记)并且想要返回到activity_1并且还想要关闭activity_2和activity_3以从任务中清除,则应使用Intent.FLAG_ACTIVITY_CLEAR_TOP以防万一。
答案 1 :(得分:2)
try with android:nohistory="true" in manifest file
答案 2 :(得分:-1)
嗨,我不确定你在做什么,一旦我面临同样的问题,所以与你分享
如果您使用addFlags
而不是使用此setFlags
尝试使用intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
代替intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Intent intent = new Intent(getApplicationContext(),
DesiredActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);