【问题标题】:Why one should not use System.exit(0) in Android application?为什么不应该在 Android 应用程序中使用 System.exit(0)?
【发布时间】:2015-10-03 16:25:33
【问题描述】:

我看到人们不建议在 Android 中使用 System.exit(0)(不是 java)来关闭各种论坛上的应用程序,包括 SO here

-- 系统知道在您的进程中运行的另一个组件。在这种情况下调用 exit() 将终止进程, 杀死您的其他组件并可能损坏您的数据。这 当然,操作系统可能不太关心,但您的用户可能不喜欢它。 :-)

here

但是在任何地方都没有详细解释使用它可能会产生什么影响

我正在寻找一个详细的解释,可能有官方参考(不幸的是我没能找到)

【问题讨论】:

  • 我认为第一个答案回答了所有问题。
  • 尝试阅读这篇文章以及stackoverflow.com/questions/16480867/…
  • “官方参考”来自 Android 工程师的 cmets,例如 Dianne Hackborn:“如果应用程序已将其 Activity 堆栈置于不良状态并在后台执行此操作,则堆栈仍在“ (来自this Google Groups post)。
  • 另外:“要明确一点:强烈建议不要使用 System.exit(),这可能会导致与系统的交互不佳。请不要将您的应用设计为需要它”(来自 @ 987654325@).
  • 并非我们作为开发人员在 Android 中需要担心的所有事情都已正式记​​录在案。许多项目都是从与 Google 工程师面对面或在线(Google Groups、G+、Stack Overflow 等)的讨论中挑选出来的。就我而言,Dianne Hackborn 的声明具有文件的重要性,除非其他谷歌员工发表了反补贴声明。你可能会觉得这还不够,这是你的决定,但如果是这样的话,你会发现 Android 非常令人沮丧。

标签: android


【解决方案1】:

如果堆栈上有多个活动,System.exit(0) 不会终止您的应用程序。实际发生的是进程被杀死并立即重新启动,堆栈上的活动减少了。

详情可以参考这个

Is quitting an application frowned upon?

【讨论】:

  • hii @RahulTiwari 请详细说明。我从提到的答案中发现的是这个。从一个共同的 AtivityBase 派生所有活动。然后按住一个标志强制关闭应用程序,在 onResume 检查是否设置了强制关闭标志。如果是这样,请调用 System.exit(0);这将通过整个活动堆栈级联,最终让应用程序完全关闭。
  • 对不起,我的意思是“有什么后果”?
猜你喜欢
  • 1970-01-01
  • 2015-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-11
  • 2011-04-12
  • 2018-07-13
  • 1970-01-01
相关资源
最近更新 更多