Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
退出android应用程序_Android_Android Activity - Fatal编程技术网

退出android应用程序

退出android应用程序,android,android-activity,Android,Android Activity,并使用这种方法 Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); 我正在开发一个应用程序,在我需要退出它的最后一个活动中,我使用了上述退出应用程序的方法。问题是它只存在于活动中,并且应用程序在后台运行(见任务管理器)。每当我再

并使用这种方法

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
我正在开发一个应用程序,在我需要退出它的最后一个活动中,我使用了上述退出应用程序的方法。问题是它只存在于活动中,并且应用程序在后台运行(见任务管理器)。每当我再次加载应用程序时,它都从我退出它的位置(最后一个活动)开始

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

提前感谢。

为什么不使用

moveTaskToBack(true);

当您调用
startActivity(意图)时添加<代码>完成()在它之后关闭旧活动(除非您希望将来返回该活动)

因此,您的代码将如下所示:

this.finish()

如果不想调用
finish()然后您还可以添加

startActivity(intent);  
finish();  

试试这个:

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

尝试在您的
AndroidManifest.xml
中使用
android:noHistory
标志


您必须通过调用

Intent finishapp = new Intent(Intent.ACTION_MAIN);
finishapp.addCategory(Intent.CATEGORY_HOME);
finishapp.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(finishapp);
也可以在活动中调用destroy方法

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

要退出应用程序,请按以下方式返回根活动(启动器启动的第一个活动):

   @Override     
   public void onDestroy()
    {
      super.onDestroy();
      finish();
     }
这将清除任务堆栈直至根活动,然后再次启动根活动

在root活动中,在
onCreate()
中,您需要根据意图中的额外内容确定是否退出,如下所示:

Intent intent = new Intent(this, MyRootActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addExtra("exit", "true");
startActivity(intent);
您还谈到了如何从任务管理器中删除应用程序。如果您指的是“最近的应用程序列表”,则这不是“正在运行的应用程序”列表,而是用户最近使用的应用程序列表。你的应用程序出现在那里并不意味着它正在运行

如果您确实希望您的应用程序不显示在“最近应用程序列表”中,只需将其添加到根活动的清单条目中:

Intent intent = getIntent();
if (intent.hasExtra("exit")) {
    // User wants to exit
    finish();
}

使用此代码启动上一个活动以清除所有活动堆栈。当您按下后退按钮或调用
finish()
时,它将退出活动

android:excludeFromRecents="true"
请注意,标记活动清除任务只能从API 11获得

有关更多信息,请参阅:

这是我的工作代码

在退出按钮上:

Intent intent = new Intent(this, YourActivityD.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
该代码用于关闭任何其他活动,并将MainActivity置于顶部 现在谈谈你的主要活动:

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();

您应该更改清单中活动的行为。阅读有关SingleInstance、SingleTop等的内容。我无法理解您所做的更改,除了将变量intent重命名为finishapp。我没有注意到。我从我的项目中复制代码,它适合我。我使用此代码从第二个活动关闭应用程序。请注意,
Intent.FLAG\u ACTIVITY\u CLEAR\u TASK
仅从API 11(Android 3.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();
if( getIntent().getBooleanExtra("close", false)){
    finish();
}