如何清除android中的活动堆栈?

时间:2011-06-21 08:00:27

标签: android android-activity

我有一个要求,我可以从应用程序中的任何活动按下注销按钮,就是当我按下注销按钮时,我需要获取login屏幕而不显示以前的活动。我正在使用:

intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP )

我正在开始这样的活动:

public void onClick(View v) {
  try
  {
      Intent intent = new Intent(getContext(), Login.class);
      v.getRootView().getContext().startActivity(intent);
      intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP );
      removeSessionFiles();
      //startActivity (new Intent(getApplicationContext(), Activity1.class));
  }
  catch (Exception e)
  {
    String str = e.toString();
  }
}

当我按下login按钮时,我转到logout屏幕,但是当我按下设备上的back按钮时,它会显示之前的活动 - 我应该转到Android我在login屏幕中按后退按钮时的主屏幕。请问您能为此提出解决方案吗?

3 个答案:

答案 0 :(得分:1)

正如dinash上面说的那样,应该在活动开始之前设置标志...在开始活动之后设置标志的重点是......代码看起来应该是这样的,

Intent intent = new Intent(getContext(), Login.class);
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP );
      v.getRootView().getContext().startActivity(intent);

      removeSessionFiles();

答案 1 :(得分:0)

ho man只是把标志设置线放在startactivity线之前......这将解决你的问题......

希望这会有所帮助......

答案 2 :(得分:0)

调用startActivity之前的

setFlags将解决您的问题

public void onClick(View v) {

try { 
Intent intent = new Intent(getContext(), Login.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP ); 
v.getRootView().getContext().startActivity(intent);
removeSessionFiles(); 
} catch (Exception e) {
String str = e.toString();
}
}