清除android中的所有活动

时间:2013-11-21 05:17:50

标签: android android-activity

我有4项活动1.Home,2.B,3.C和4.D.每当我从活动D开始回家时,我想完成所有其他活动。我使用了这段代码,但当我从Home按回按钮时,它会将我带到上一个活动。我在这里做错了什么。?

    Intent intent = new Intent(getApplicationContext(), Home.class);        
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent)

3 个答案:

答案 0 :(得分:2)

你可以试试这个,

Intent intent = new Intent(getApplicationContext(), Home.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

注意:如FLAG_ACTIVITY_CLEAR_TOP文档中所述

  

此启动模式也可以与FLAG_ACTIVITY_NEW_TASK结合使用:如果用于启动任务的根活动,它会将该任务的任何当前运行的实例带到前台,然后将其清除到其根目录州。这在从通知管理器启动活动时尤其有用。

答案 1 :(得分:1)

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

这仅适用于仍在活动堆栈中的活动。我相信你在去B时正在完成家庭活动。所以CLEARTOP将不起作用。 现在尝试这样的事情。

您需要在Home中设置额外的“D”意图。然后你必须在Home中检查Intent extra,如果额外匹配则调用finish()

    Intent intent = new Intent(contxt, Home.class);
    intent.putExtra("urString",defaultvalue);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    // Checking the intent extra at "HOME"
    if(getIntent().hasExtra("urString")){
      // manage your own way            
      finish();
    }

答案 2 :(得分:-1)

在manifest.xml文件中为所有活动设置android:nohistroy =“true”