ios会在特定时间后终止后台运行的应用程序吗?
我在我的应用程序中使用核心位置框架,我在UIBackgroundMode或Required background Mode(在Xcode 4.2中)中设置位置字符串用于在后台运行应用程序时从ios会在特定时间后终止后台运行的应用程序吗?,ios,ios5,core-location,uiapplicationdelegate,background-task,Ios,Ios5,Core Location,Uiapplicationdelegate,Background Task,我在我的应用程序中使用核心位置框架,我在UIBackgroundMode或Required background Mode(在Xcode 4.2中)中设置位置字符串用于在后台运行应用程序时从didUpdateToLocation方法获取更新的位置,并通过点击核心位置框架的didUpdateToLocation方法中的特定链接将此更新的位置发送到服务器 我的问题是,应用程序是否会在后台运行一段时间后终止?否,没有为此定义具体时间。但应用程序肯定会根据某些参数终止-电池消耗、内存占用问题等 开发人员
didUpdateToLocation
方法获取更新的位置,并通过点击核心位置框架的didUpdateToLocation
方法中的特定链接将此更新的位置发送到服务器
我的问题是,应用程序是否会在后台运行一段时间后终止?否,没有为此定义具体时间。但应用程序肯定会根据某些参数终止-电池消耗、内存占用问题等 开发人员文档中明确提到:“系统将暂停的应用程序尽可能长时间地保留在内存中,只有在可用内存不足时才会删除它们。保留在内存中意味着后续启动应用程序的速度要快得多。” 仔细检查一下,以了解完整的细节-
快速回答基本上是否定的。但要深入了解,请阅读下面的内容 由于iOS设备已启用多任务处理,因此a)您的应用程序获得分配的内存量,b)设备限制在任何给定时间发生的任务量,即应用程序使用内存。如果您使用iOS设备并打开多个应用程序,您将开始注意到您首先打开的应用程序可能已被终止并从
viewDidLoad
重新加载
一般来说,如果您的应用程序是最近打开的应用程序(甚至是在手机上,有人经常清除多任务菜单),那么可以放心地说,该设备不会在后台终止您的应用程序。我已经看到后台位置更新会持续几个小时。但是如果我去一个没有接收信号的地方,设备会停止发送GPS更新,当我去一个有接收信号的地方时,它不会启动。这在大约30分钟后发生
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:
但是如果我在iOS6中添加这个,应用程序将不会终止
[locationManager setPausesLocationUpdatesAutomatically:NO];
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:
在上述所有方法中,应用程序获得的时间有限
完成它的加工。如果应用程序花费的时间太长,操作系统将
终止应用程序
我确信这对作者没有用处,因为这个问题是在2012年6月提出的,我将在2019年6月给出答案。这个答案可能对其他用户有用 我之所以发布这个答案,是因为每个人都说这是操作系统的默认行为,我们不能改变它……等等……等等。 最近,我也有同样的要求。经过2-3周的努力 工作,我做到了。对于其他用户,我为其创建了一个助手类。我的 在启用位置跟踪之前,操作系统永远不会终止应用程序 您还可以验证操作系统是否永远不会停止工作 用于活动和非活动状态下的无限位置跟踪 参考应用商店中提供的我的应用(如果启用位置跟踪,应用将永远不会被操作系统杀死) 位置管理器,允许每天获取后台位置更新 n秒,具有所需的定位精度 优势:
- 如果位置管理器当前处于关闭状态,操作系统将永远不会关闭我们的应用程序 跑步
- 在需要时定期进行位置更新(范围介于2- 170秒(受允许的最大后台任务时间限制))
- 可定制的定位精度和时间周期
- 低内存消耗(单例类)
谢谢,这个链接非常有用。我想问的另一个问题是,我们是否需要DidUpdateLocation方法中的任何事件处理,因为当应用程序处于后台状态时,上述链接的给定文档中规定了“不处理事件时睡眠”。如果您对获取位置感兴趣,即使它处于睡眠状态,那么您需要使用此选项,当应用程序进入睡眠状态时?文档中指出,当应用程序处于后台时,UIBackgroundMode(位置)将在位置更新时通知应用程序。我想如果