如何以编程方式退出 Android 应用程序?

新手上路,请多包涵

我确信这个问题已经被问过很多次了,因为我读过一些。我的客户希望我在他的应用程序中放置一个按钮,用户可以在其中单击并退出。我读过 这篇 文章,发现调用 finish() 会做到这一点。但是,finish 只是关闭当前正在运行的活动吗?我有很多活动,所以在这种情况下,我必须传递每个活动的实例并完成它们,或者将每个活动都变成单例模式。

我还了解到 Activity.moveTaskToBack(true) 可以让您进入主屏幕。好的,这不是关闭而是后台处理。那么这个有效果吗?

我应该使用哪种方法完全关闭应用程序?任何上述或任何其他方法/上述方法的其他用法?

原文由 PeakGen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 744
1 个回答

API 16 中发布的 finishAffinity 方法关闭所有正在进行的活动并关闭应用程序:

 this.finishAffinity();

完成此活动以及当前任务中具有相同亲和力的紧接其下的所有活动。这通常在应用程序可以启动到另一个任务(例如从它理解的内容类型的 ACTION_VIEW)并且用户使用向上导航切换出当前任务并切换到自己的任务时使用。在这种情况下,如果用户向下导航到第二个应用程序的任何其他活动,则所有这些活动都应作为任务切换的一部分从原始任务中删除。

请注意,此完成不允许您将结果传递给之前的活动,如果您尝试这样做,将会抛出异常。

从 API 21 开始,您可以使用:

 finishAndRemoveTask();

完成此任务中的所有活动并将其从最近的任务列表中删除。

备择方案:

 getActivity().finish();
System.exit(0);

 int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);

 Process.sendSignal(Process.myPid(), Process.SIGNAL_KILL);

 Intent i = new Intent(context, LoginActivity.class);
i.putExtra(EXTRA_EXIT, true);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(i);

资料来源: 如何以编程方式退出 android 应用程序

希望能帮助到你!祝你好运!

原文由 Shreshth Kharbanda 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题