【发布时间】:2012-06-29 07:02:46
【问题描述】:
我知道不应该使用 system.exit(0)。 我已经阅读了很多教程,并说明了为什么不建议将它用于退出应用程序,而 finish() 是一个更好的选择,但在极少数情况下,当使用这种肮脏的解决方法时,我的主要问题是 它会损害 android 设备吗或设备的任何方面(如果使用)?
【问题讨论】:
标签: android system.exit
我知道不应该使用 system.exit(0)。 我已经阅读了很多教程,并说明了为什么不建议将它用于退出应用程序,而 finish() 是一个更好的选择,但在极少数情况下,当使用这种肮脏的解决方法时,我的主要问题是 它会损害 android 设备吗或设备的任何方面(如果使用)?
【问题讨论】:
标签: android system.exit
简短回答:不。
长答案:不,它不会损害设备或设备的任何方面。它只是从内存中删除应用程序并清理所有使用的资源。如果您打开了任何文件,它们可能会损坏,但文件系统不会。 Android 应该释放您当时使用的所有资源(GPS、WiFi 等),但它们可能处于未定义状态。将System.exit() 的影响与应用程序崩溃进行比较:这也不会影响您的设备。
【讨论】:
不建议在应用程序的“main”方法之外的任何地方调用System.exit(0),原因如下。
这是重用代码的障碍。
它使单元测试变得困难。例如,如果您的代码在某些测试执行某些错误处理时调用 System.exit,它将在遇到 System.exit(0) 时结束测试。
【讨论】:
它不会损害您的设备。 唯一棘手的一点是,由于异步意图广播/接收架构,Android 可以立即让您的应用恢复活力。 假设您刚刚广播了您的应用程序的活动收听的内容。 然后你退出。但是 android 会让你的应用恢复活力来处理广播。
【讨论】: