如何在意图加载时清除后栈

时间:2014-02-11 15:14:45

标签: android back-stack

我的应用程序中有一个登录系统,我想这样做,一旦用户登录到他们的帐户,后台堆栈被清除,所以他们看不到登录活动,除非他们点击日志主要活动中的按钮。我该如何做到这一点?

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

使用finish()方法在意图后销毁您的登录活动。它也将从堆栈中删除。

Intent i = new Intent(this, YourAccountActivity.class);
startActivity(i);

// destroying your current activity
finish();

如果您不想将此活动放入堆栈,也可以使用

android:noHistory="true"

中的

AndroidManifest.xml

更改活动时,此活动不会在堆栈中。

  

值“true”表示活动不会留下历史记录   跟踪。它不会保留在任务的活动堆栈中,所以   用户将无法返回。

另一种选择是使用IntentFlags。

Intent i = new Intent(this, YourAccountActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);

答案 1 :(得分:1)

如果您想同时手动完成两个活动,那么您可以使用ApplicationContext类并在该定义中。

MyApplicationClass.java

public Activity homeActivity = null;
public Activity otherActivity = null;

当你启动Homeactivity时,可以使用onCreate()方法:

HomeActivity.java

private MyApplicationClass myApplication = null;

   myApplication = (MyApplicationClass )getApplicationContext();

   myApplication.homeActivity = HomeActivity.this;

相同的onotheractivity的onCreate()方法:

otheractivity.java

private MyApplicationClass myApplication = null;

       myApplication = (MyApplicationClass )getApplicationContext();

       myApplication.otherActivity = otheractivity.this;

当你想要在同一时间完成家庭活动和其他活动时 你可以这样完成..

myApplication.homeActivity.finish();
myApplication.otherActivity.finish();