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

并使用这种方法

moveTaskToBack(true);

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

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

提前致谢。

4

9 回答 9

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"
于 2013-01-14T09:50:24.863 回答
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);
于 2013-01-14T08:30:41.080 回答
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

于 2013-05-30T16:45:33.257 回答
0

为什么你根本不使用

this.finish()

?

于 2013-01-14T08:05:35.277 回答
0

当你在它之后调用startActivity(intent);addfinish();来关闭旧的活动时(除非你想在将来回到那个活动)

所以你的代码看起来像:

startActivity(intent);  
finish();  
于 2013-01-14T08:26:14.643 回答
0

试试这个:

Intent finishapp = new Intent(Intent.ACTION_MAIN);
finishapp.addCategory(Intent.CATEGORY_HOME);
finishapp.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(finishapp);
于 2013-01-14T08:32:46.137 回答
0

尝试android:noHistory在您的AndroidManifest.xml.

http://developer.android.com/guide/topics/manifest/activity-element.html

于 2013-01-14T09:24:06.630 回答
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();
     }
于 2013-01-14T09:47:11.457 回答
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();
}
于 2015-11-26T10:25:14.773 回答