以编程方式阻止应用程序在后台iOS中运行

我有一个应用程序将在后台运行,但有一种情况下,我不希望这种情况发生,我可以实现这个程序?

我知道我可以通过改变这个plist值来select退出,但是在运行时呢?

你不能使用exit(0)b / c苹果不允许你在用户不知道的情况下closures应用程序。

从技术问答QA1561 如何以编程方式退出我的iPhone应用程序? 。

没有API提供优雅地终止iPhone应用程序。 在iPhone OS下,用户按下主页buttonclosures应用程序。 如果您的应用程序具有不能提供其预期function的条件,build议的方法是向用户显示一个警告,指出问题的性质以及用户可能采取的行动 – 打开WiFi,启用定位服务等。允许用户自行决定终止应用程序。

将variablesUIApplicationExitsOnSuspend(应用程序不在后台运行)添加到您的应用程序plist中,并赋值YES。

您可以通过调用applicationDidEnterBackground exit(0)来closures该应用applicationDidEnterBackground

不鼓励调用exit(),也不通知用户应用程序将要终止。 所以你需要让操作系统杀死你的应用程序(因为它通常会做一段足够长的操作),同时通知用户。 这样做的一个方法是只使用合法的API,尽可能多地对内存页进行肮脏处理(malloc和bzero),然后用Safari的URL访问哈希网站,解释应用程序为什么要退出。 Safari将需要足够的内存来显示网站,即您的应用程序将被操作系统终止,就像用户正确通知一样。

睡觉,直到操作系统杀死计时器杀死你的应用程序也将杀死你的应用程序,但这种无响应的延迟将locking用户界面,这不是一个好的用户体验。