0

例如,

我有活动 A、B、C、D

A 呼叫 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。

我的问题是如何在调用之前清除 Activity A、B、C,finish()以便应用正常退出。

不要建议finish()每次都调用,startactivity因为应用程序可以按回上一个活动以继续。

4

5 回答 5

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
}

如果有任何问题可以问,玩得开心

于 2013-09-05T07:43:26.807 回答
1
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_SINGLE_TOP
FLAG_ACTIVITY_CLEAR_TASK
FLAG_ACTIVITY_NEW_TASK

这确保如果一个实例已经在运行并且不是顶级的,那么它上面的任何东西都将被清除并被使用,而不是启动一个新实例(这很有用,一旦你去 Activity A -> Activity B 然后你想从 B 回到 A,但额外的标志不应该影响你上面的情况)。

于 2013-09-05T06:57:19.810 回答
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);
于 2013-09-05T06:56:27.883 回答
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;
    }
}
于 2013-09-05T07:02:27.050 回答
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

于 2013-09-05T07:08:43.127 回答