我有一些活动,我一个接一个地执行而没有关闭(1-> 2-> 3-> 4)。我想关闭来自4的1,2,3个活动并执行一个新活动;代码:
Intent intent = new Intent(UserpickActivity.this, CommunicationActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
UserpickActivity - 第4项活动,CommunicationActivity - 下一项活动。但在此代码之后,所有以前的活动仍然有效。如何关闭所有正在运行的活动并执行一些新活动?
答案 0 :(得分:1)
切换到其他活动后致电activity.finish();
。这样就不会在堆栈上保留任何活动。
Intent intent = new Intent(UserpickActivity.this, CommunicationActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
//YOUR_ACTIVITY.finish();
如果您希望从活动堆栈中删除此活动,请取消注释上述行。
答案 1 :(得分:1)
//这将清除所有活动并开始新任务。
Intent intent = new Intent(UserpickActivity.this, CommunicationActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
答案 2 :(得分:1)
试试这个:
如果要从Activity4启动CommunicationActivity
,请执行以下操作:
Intent intent = new Intent(this, Activity1.class); // Your root activity
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // Will remove all other activities from the task
intent.putExtra("foo", true); // This is to tell Activity1 to launch Activity4
startActivity(intent);
在Activity1.onCreate()
中执行以下操作:
super.onCreate();
if (getIntent().hasExtra("foo")) {
// We should now launch CommunicationActivity and finish ourselves
Intent intent = new Intent(this, CommunicationActivity.class);
startActivity(intent);
finish();
return; // Don't continue the rest of onCreate()
}
// The rest of your onCreate() goes here
您只能使用CLEAR_TOP
清除活动堆栈中的现有活动。这就是您使用CLEAR_TOP
无效的原因(因为活动堆栈中不存在CommunicationActivity
)。
此方法清除所有活动并再次启动根活动。当调用根活动的onCreate()
时,它会检查Intent是否有额外的“foo”,它将其用作启动CommunicationActivity
并完成自身所需的信号。这应该做你想要的。
答案 3 :(得分:-1)
在活动清单中使用android:nohistory = true。
<activity
android:name=".A"
android:label="@string/app_name"
android:noHistory="true" >