如何关闭一个有多个活动状态的Android应用程序?
一篇名为“退出Android应用程序”的博客文章将展示如何退出Android应用程序:
当用户希望退出所有打开的活动时,他们应该按下一个按钮,该按钮会加载运行应用程序时第一个Activity,在我的情况下是“LoginActivity”。
Intent intent = new Intent(getApplicationContext(), LoginActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("EXIT", true); startActivity(intent);
以上代码清除了除LoginActivity之外的所有活动。LoginActivity是用户运行程序时首先启动的活动。然后将此代码放入LoginActivity的onCreate中,以在传递“Exit”消息时发出自我销毁的信号。
if (getIntent().getBooleanExtra("EXIT", false)) { finish(); }
Intent intent = new Intent(ExitConfirmationActivity.this, FirstActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
好的,您不应该关闭应用程序,因为系统会管理它。有关更多信息,请参阅其他答案中的帖子/主题。
但是,如果您真的非常想这样做,您仍然可以像任何其他Java应用程序一样调用System.exit(0);
。
编辑
ActivityManager actmgr = (ActivityManager) this.getSystemService (Context.ACTIVITY_SERVICE);
actmgr.restartPackage ("com.android.your.package.name");
我想起了一些事情。我曾试图使用这段代码重新启动我的应用程序,但它只能关闭我的应用程序。你可以尝试一下,看看它是否适用于你。
我几周前问过一个类似的问题。请查看答案和评论以获取更多视角和可能的解决方案。
在我看来,退出应用程序取决于您的应用程序所做的事情和用户的期望。虽然我理解不设置退出按钮的原因,但我也相信这是应用程序设计师根据情况做出的选择。
一旦您的最后一个Activity失去焦点,Android将根据当前系统需求/空闲资源卸载您的进程。您不应该真正关心这个 - 只需使用生命周期onStart、OnStop等来管理您的状态。
finish();
System.exit(0);