2010-08-22 88 views
1

大家好,iPhone:离开应用程序的正确方法是什么?

与iOS 4,iPhone支持多任务,什么是非常好的,但我不希望在我的应用程序支持的东西。我的意思是,当用户按下主页按钮时,我希望我的应用程序完成并且不要在背景中输入。在iOS 4中,当用户按下主页按钮时,应用程序调用applicationDidEnterBackground:delegate的方法在后台输入,并且当用户按下主页按钮时强制应用程序结束,我已经完成了以下操作执行:

- (void)applicationDidEnterBackground:(UIApplication *)application { 
     //save everything... 
    exit(0); 
} 

问题:我注意到,该出口(0)立即带来了应用程序完成,而无需调用重新分配的方法,如“dealloc的”,我认为这不是一个良好的编程风格。所以我想问你们,如何让应用程序以“更好”的方式完成。

在此先感谢。

+0

[正确的方式退出iPhone应用程序?](http://stackoverflow.com/questions/355168/proper-way-to-exit-iphone-application) – dbr 2010-08-22 08:04:40

+0

您可以在这里找到答案:http ://stackoverflow.com/questions/3268182/iphone-4-0-programming-disabling-multitasking - 也是,'exit(0)'不是退出iOS应用程序的正确方法。 – BoltClock 2010-08-22 08:04:52

回答

4

你真的想不退出应用程序(这是因为提到不允许的),但告诉操作系统你宁愿你的应用被杀死,而不是转到后台什么。

有一个info.plist键,UIApplicationExitsOnSuspend。将你的info.plist设置为TRUE(选中),然后当你的应用进入后台时,它将被终止。

+0

这是正确的,但实际上,为什么你不想支持至少快速的应用程序切换?它有助于用户,而且不难实现。请记住,快速应用切换不会占用CPU周期或浪费电池。该应用程序没有运行,只是在内存中冻结。让操作系统决定何时完全关闭它。它足够聪明。 – 2010-08-22 08:51:53

+0

感谢Helmstetter和Pumbaa80的回答,你给了我一个比我期待的更好的答案。是的,Info.plist上的这个布尔值为我工作。 @Joost Schuur:是的,我可以,但它不会改变一切:当程序启动或“完成加载”时,它必须从服务器上载xml以显示它的内容。因此,实施多任务并不是什么大问题。多任务取决于你的目标和设计模式。 – jcdmb 2010-08-22 15:24:51

+0

你应该停止将其视为,并称之为“多任务”。快速切换应用程序的目的是在您追踪到其他应用程序后返回应用程序时提高应用程序的响应速度。直到您加载的XML数据过期了多久?如果有人加载您的应用程序,花费30秒钟,检查一封电子邮件,然后回到它,你不能使用旧的数据副本?为什么当应用程序重新从头开始重新加载它?这不是关于在后台运行应用程序。这是关于创业经验。 – 2010-08-22 17:05:18

0

你是不允许的。我从经验中知道:因为我退出了苹果应用程序的拒绝(这是两年半前,但我怀疑他们已经改变了他们的政策)。在UIApplication,IIRC上有一个“私有”(即在头文件中没有提到)方法“终止”。但是苹果说你可能不会那样做。只有你可以做的是显示一个对话框,要求用户按主页按钮。但是如果在启用了多任务的设备上反过来又不起作用......所以我想你必须改变你的应用程序,以便你可以在applicationDidEnterBackground上抛弃你的状态并重新开始applicationDidBecomeActive上的应用程序。

+0

实际上,我们被允许从iOS 4中的后台功能中排除应用程序 - 这是一个确切的事情。查看上面链接的复制问题。 – BoltClock 2010-08-22 08:06:40

+0

到目前为止,我已经看到两个带有退出按钮的游戏,我真的很讨厌这个程序。但是你不必支持多任务处理。 – Eiko 2010-08-22 08:22:22

1

上面的一个答案说:“有一个info.plist键,UIApplicationExitsOnSuspend。在你的info.plist中设置为TRUE(选中),然后当你的应用程序进入后台时,它将被终止。使用Xcode 4时,info.plist的值是布尔类型的“应用程序不在后台运行”,因此将其设置为YES会在用户按下“home”按钮时退出应用程序。

相关问题