在iOS 4.0中退出应用程序

在iOS4.0之前,单击iPhone上的主页button退出该应用程序,并且苹果在其指南中以编程方式退出该应用程序不被接受。

现在iOS4.0中的所有内容都发生了变化,单击主页button会将您的应用程序置于暂停模式(多任务处理)。我认为应该有一个清晰的方式让用户退出应用程序,如退出button。

现在可以用苹果吗? 如何做呢?

没有人不应该这样做。

你有处理不同的阶段,所以这是你应该怎么做。 手动退出没有任何意义。 如果您重新启动应用程序,理想情况下它将从您停止的位置开始,因此可以通过恢复或通过启动和加载旧状态来启动。

没有理由退出。

编辑

随着这种情况不断出现: iOS人机界面指南中提到“不要以编程方式退出”。 而且我们已经看到很多关于过去曾经呼吁退出()的应用的报道。

退出而不是通过在Info.plist文件中设置适当的键来挂起是完全没问题的 – 当然,这不是一个专用的UI Button,而是由主页button退出程序的特定应用程序。

您可以设置Info.plist键UIApplicationExitsOnSuspend,以确保应用程序完全终止。

有一个编程调用exit()的原因。

假设你有一个voip应用程序,它始终在启动时启动,并在系统死亡时重新启动,例如发生内存警告时。 通常这是首选的行为,因为你需要在后台运行,以维护你的VoIP套接字。

但是,如果应用程序支持多种操作模式,如a)使用TCP在后台运行,以及b)不在后台运行,但只有在接受PUSH通知后才能启动 – 如果用户在b)模式下使用应用程序,不要幻想这个应用程序正在消耗可用于其他应用程序的内存。

所以,如果应用程序可以检查启动,如果它启动到后台,并且用户希望应用程序在b)模式下运行并正常exit(0) ,则不会再自动重新启动。

另请参阅iOSdebugging魔术(技术说明TN2239) :

请注意,iOS应用程序生命周期是在用户控制之下,这意味着iOS应用程序不应该退出。 您的发布版本只能在发生崩溃的情况下调用中止,并且中止调用可以防止损坏用户数据,或允许您更轻松地诊断问题。

关于确定过早退出原因的主题, 了解和分析iPhone OS应用程序崩溃报告(技术说明TN2151)可能是有意义的。

对不起,有一点点话题,但它涉及到早期的退出和诊断。

杰夫

我有这个真正的问题。 退出手动或者退出有一个很重要的地方。

与以前的iPhone操作系统,我的应用程序写出了它的状态(第一次使用或第二次以后等)在一个plist时终止。 当用户回来的时候,他想通过阅读plist来展示不同的东西。 而且,每次用户退出后都要显示第一个屏幕。

随着应用程序与iPhone OS4在后台暂停,应用程序回来的地方,即离开(即显示相同的屏幕,无论用户在哪里),永远不会改变它的状态,因为applicationWillTerminate现在不会被调用。

因为这是大部分时间所需要的行为(当你暂时离开应用程序时能够继续),必须有一种方法可以select,即暂停或退出。

由于设置UIApplicationExitsOnSuspend = YES只给出一种方法(即当HOME按下时它总是终止),这不是我正在寻找的解决scheme。

我希望应用程序知道一旦完成了整个连锁步骤,反对只是顺序被暂停,并在适当的时候退出。

要做到这一点,我必须能够终止应用程序,并写出状态,一旦使用完成整个序列。 其他时候,我只是希望应用程序被暂停。

如果你点击HOMEbutton两次,你可以看到暂停的应用程序。 我可以通过长时间触摸来删除(退出)我的应用程序,并触摸出现的( – )符号,但这对用户和步骤来说并不那么直观。

另一个select是在我的应用程序中有一个Quitbutton作为导航标签之一,但这很丑陋。 现在,我唯一的select似乎是select设置UIApplicationExitsOnSuspend = YES。

你总是可以使用exit(1) 。 这是一个代码/原因的整数的原始/强制退出。 你可以在开发过程中使用这个,就像在模拟模式中,当你只是想要终止时; 如现在。

以下是@Joost Schuur的步骤:

  1. 打开你的info.plist文件

  2. 添encryption钥UIApplicationExitsOnSuspend或select应用程序不会在后台运行

  3. 将新密钥设置为YES或填写checkbox

applicationWillResignActiveapplicationWillTerminate断点将显示它的工作原理。

你不应该这样做。 当用户想要退出应用程序时,他将按HOMEbutton。

当用户按下主页button时,您将得到一个UIApplicationWillResignActiveNotification通知。 使用该通知来清除所有资源。

基本上你的应用程序应该“隐藏在一个angular落”(消耗尽可能less的内存),当用户按下主页button。 但是,如果用户切换回来(需要重新加载所有资源),则应用程序再次显示的时间越长,就会有一个折衷。

您可以使用此私有命令以编程方式将应用程序置于后台:

(但是如果你使用它,你的应用程序将被拒绝)

 [[UIApplication sharedApplication] suspend];