Android 完全强制退出应用

Android completely force quitting an app

我有一个登录 activity。登录后,Main activity 启动,它使用片段进行用户导航。我想要在主 activity 的导航抽屉中有一个按钮,它将完全关闭应用程序

现在,我已经看到很多关于此的话题,并尝试实施他们的解决方案。例如:

我已经在我的 Main activity 中尝试了 finishAffinity(),这应该会关闭当前 activity 以及所有父活动

我试过在打开主 Activity 后立即在登录 activity 上使用 finish(),然后在用户单击 finish() 时再次调用 finish()按钮

这个问题的最高投票答案:Close application and remove from recent apps/,似乎也没有用。首先,android:autoRemoveFromRecents="true"需要API > 21,但即使我将最低SDK版本设置为21,应用程序仍然在列表中

最后,我尝试在用户单击退出按钮并导航回登录 activity 时使用 Intent,并使用额外的退出设置标志,然后完成登录 activity (即 exit android application programmatically

None 其中有效。他们都会关闭 Main Activity,甚至可能关闭 Login activity。但是,如果用户单击应用程序 list/current apps/open 应用程序键(大多数手机上的方形软键),该应用程序仍然在那里可见。当在该列表中单击该应用程序时,它将带我回到登录 activity 屏幕(我不确定这是从新启动该应用程序,还是只是将我带到之前的登录屏幕t 关闭)

出于绝望,我什至尝试了 System.exit(0),我知道这很糟糕,但即使那样也不会从应用列表中删除该应用

那么,如何以编程方式完全退出应用程序并删除它打开的所有痕迹?

编辑:我太草率地声称下面的答案之一没有用(见上面的斜体)。答案确实正确删除了应用程序

根据我的研究:

无法在 android 中强制应用程序。您只能暂停 activity。退出应用程序的决定权完全取决于 android 框架,它会检查应用程序的内存和资源利用率。暂时找不到官方的link,但我之前看过。

我认为 this is the solution 您正在寻找。

您可以考虑使用另一个名为 ExitActivity 的 activity,当您尝试退出应用程序时将调用它。这里的技巧是,ExitActivity 将在 manifest 文件中将 android:autoRemoveFromRecents 设置为 true,这样您的实例就会从最近的实例中自动清除。

由 OS 管理。调出主屏幕。

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