ios会在特定时间后终止在后台运行的应用程序吗?
我在我的应用程序中使用核心位置框架,我设置位置string在UIBackgroundMode或所需的背景模式(在Xcode 4.2中),以获取更新的位置从didUpdateToLocation
方法,当应用程序在后台运行,也通过点击发送这个更新的位置服务器核心位置框架的didUpdateToLocation
方法内的具体链接。
我的问题是,在后台运行一段时间后,应用程序将被终止?
不,没有具体的时间定义这个。但是根据一定的参数 – 电量耗尽,内存占用问题等,应用程序肯定会终止。
在开发者文档中明确提到:“系统会尽可能长时间地将暂停的应用程序保存在内存中,只有在可用内存量不足的情况下才将其删除,剩余内存意味着后续启动应用程序的速度会更快。
我已经看到,后台位置更新将工作几个小时。 但是,如果我去一个没有接待的地方,设备将停止发送GPS更新它不会开始,当我去一个接待的地方。 约30分钟后发生。
但是如果我添加这个,在iOS6中,应用程序将不会终止
[locationManager setPausesLocationUpdatesAutomatically:NO];
由于以下原因,iOS应用可能会被终止:
- 看门狗超时
正如你可能知道的那样,自从iOS 4.x以来,大多数时候你退出一个iOS应用程序,应用程序不会被终止,而是被发送到后台。
However, there are times when the OS will terminate your app and generate a crash log if the app didn't respond fast enough. These events correspond with the implementation of the following UIApplicationDelegate methods: - application:didFinishLaunchingWithOptions: - applicationWillResignActive: - applicationDidEnterBackground: - applicationWillEnterForeground: - applicationDidBecomeActive: - applicationWillTerminate:
在所有上述方法中,应用程序获得有限的时间来完成其处理。 如果应用程序需要的时间太长,操作系统将终止应用程序。
- 用户强制退出
iOS 4.x支持多任务处理。 如果应用程序阻止用户界面并停止响应,则用户可以在主屏幕上双击主页button并终止该应用程序。
注意:您可能已经注意到,当您双击主页button时,您也会看到过去运行的所有应用程序的列表。 这些应用程序不一定在运行,也不一定会被暂停。
一般情况下,一旦用户点击主页button,一个应用程序大约需要10分钟才能保持在后台,然后由操作系统自动终止。 因此,通过双击主页button,您看到的应用程序列表只是过去的应用程序运行列表。
- 低内存终止
当inheritanceUIViewController时,您可能已经注意到了didReceiveMemoryWarning方法。
任何在前台运行的应用程序在访问和使用内存方面都具有最高的优先级。 但是,这并不意味着应用程序会获取设备上的所有可用内存 – 每个应用程序都会获得一部分可用内存。
当总内存消耗达到一定水平时,操作系统发出一个UIApplicationDidReceiveMemoryWarningNotification通知。 与此同时,didReceiveMemoryWarning被调用的应用程序。
此时,为了让您的应用程序继续正常运行,操作系统开始在后台终止应用程序以释放一些内存。 一旦所有的后台应用程序终止,如果你的应用程序仍然需要更多的内存,操作系统终止你的应用程序
快速回答几乎没有。 深入阅读以下内容。
由于在iOS设备上启用了多任务处理function,因此:a)您的应用程序获得了分配的内存量; b)设备限制任何给定时间发生的任务(即使用内存的应用程序)的数量。 如果您使用iOS设备并打开多个应用程序,则会开始注意到您先打开的应用程序可能已被终止,并从viewDidLoad
重新加载。
一般来说,如果您的应用程序是最近打开的应用程序(或者甚至是某人通常会清除多任务菜单的电话),则说明该设备不会在后台终止您的应用程序。