退出android应用程序

时间:2013-01-14 08:03:01

标签: android android-activity

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

并使用此方法

moveTaskToBack(true);

我正在开发一个应用程序,在我需要退出它的最后一个活动时,我已经使用了退出应用程序的上述方法,问题是它是否存在只有活动和应用程序在后台运行(在任务中看到)经理)。每当我再次加载应用程序时,它都从我退出它的地方开始(最后一个活动)。

是否有任何代码可以完全退出并删除表单背景(任务管理器)。

提前致谢。

9 个答案:

答案 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();
}