例如,
我有活动A,B,C,D
致电B
Intent intent = new Intent(A,B.class);
startActivity(intent);
然后,B呼叫C
Intent intent = new Intent(B,C.class);
startActivity(intent);
之后,C呼叫D
Intent intent = new Intent(C,D.class);
startActivity(intent);
在活动D中,我致电finish()
。它将返回活动C。
我的问题是如何在调用finish()
之前清除活动A,B,C,以便应用程序退出正常。
不建议在每个finish()
上致电startactivity
,因为该应用可以按回以前的活动以继续。
答案 0 :(得分:2)
这应该可以肯定......
Intent intent = new Intent(D,A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("close",true);
startActivity(intent);
and in oncreat of A activity u have to write
if (getIntent().getBooleanExtra("close", false)) {finish();
}
else {
{
//ur previous code here
}
如果您有任何问题可以提出要求
答案 1 :(得分:0)
尝试添加FLAG_ACTIVITY_NEW_TASK
。
所以你的代码是:
Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
答案 2 :(得分:0)
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_SINGLE_TOP
FLAG_ACTIVITY_CLEAR_TASK
FLAG_ACTIVITY_NEW_TASK
确保如果一个实例已经在运行并且不是顶级的,那么它上面的任何内容都将被清除并且将被使用,而不是启动一个新实例(这在你去过活动A后很有用 - >活动B,然后你想从B回到A,但额外的标志不应该影响你的情况)。
答案 3 :(得分:0)
我在我的申请中使用以下内容。希望它会有所帮助。
Intent intent = new Intent(this, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // this will clear the stacks
intent.putExtra("exitme", true); // tell Activity A to exit right away
startActivity(intent);
并在活动A中添加以下内容:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
if( getIntent().getBooleanExtra("exitme", false)){
finish();
return;
}
}
答案 4 :(得分:0)
尝试使用Intent.FLAG_ACTIVITY_CLEAR_TOP
Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
见这里 http://developer.android.com/reference/android/content/Intent.html