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);
我有一个登录 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);