Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
并使用此方法
moveTaskToBack(true);
我正在开发一个应用程序,在我需要退出它的最后一个活动时,我已经使用了退出应用程序的上述方法,问题是它是否存在只有活动和应用程序在后台运行(在任务中看到)经理)。每当我再次加载应用程序时,它都从我退出它的地方开始(最后一个活动)。
是否有任何代码可以完全退出并删除表单背景(任务管理器)。
提前致谢。
答案 0 :(得分:5)
要退出应用程序,请以这种方式返回您的根活动(启动器启动的第一个活动):
Intent intent = new Intent(this, MyRootActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addExtra("exit", "true");
startActivity(intent);
这会将任务堆栈清除为根活动,然后再次使用此意图启动根活动。
在您的根活动中,在onCreate()
中,您需要根据意图中的额外内容确定退出,如下所示:
Intent intent = getIntent();
if (intent.hasExtra("exit")) {
// User wants to exit
finish();
}
您还要说明从任务管理器中删除您的应用。如果您指的是“最近的应用程序列表”,这不是“正在运行的应用程序”的列表,它是用户最近使用的应用程序列表。仅仅因为您的应用程序显示并不意味着它正在运行。
如果您确实希望自己的应用不会显示在“最近的应用列表”中,只需将其添加到根活动的清单条目中:
android:excludeFromRecents="true"
答案 1 :(得分:1)
如果您不想致电finish();
,那么您也可以添加
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
与
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
答案 2 :(得分:1)
使用此代码开始上一个活动以清除所有活动堆栈。当您按后退按钮或致电finish()
时,它将退出活动。
Intent intent = new Intent(this, YourActivityD.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
请注意,FLAG_ACTIVITY_CLEAR_TASK仅适用于API 11 有关详细信息,请参阅:http://developer.android.com/guide/components/tasks-and-back-stack.html
答案 3 :(得分:0)
为什么你根本不使用
this.finish()
答案 4 :(得分:0)
当您致电startActivity(intent);
之后添加finish();
以关闭旧活动(除非您希望将来再次参与该活动)
所以你的代码看起来像:
startActivity(intent);
finish();
答案 5 :(得分:0)
试试这个:
Intent finishapp = new Intent(Intent.ACTION_MAIN);
finishapp.addCategory(Intent.CATEGORY_HOME);
finishapp.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(finishapp);
答案 6 :(得分:0)
尝试在android:noHistory
中使用AndroidManifest.xml
标记。
http://developer.android.com/guide/topics/manifest/activity-element.html
答案 7 :(得分:0)
你必须通过调用
来完成活动 Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
activity.this.finish();
或者您可以在活动中调用destroy方法
@Override
public void onDestroy()
{
super.onDestroy();
finish();
}
答案 8 :(得分:0)
这是我的工作代码
退出按钮:
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
ComponentName cn = intent.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
mainIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
mainIntent.putExtra("close", true);
startActivity(mainIntent);
finish();
该代码将关闭任何其他活动并将MainActivity置于最顶层 现在在您的MainActivity上:
if( getIntent().getBooleanExtra("close", false)){
finish();
}