我用我的应用程序中的核心位置框架,我设置UIBackgroundMode位置字符串或从获取更新的位置所需的背景模式(在Xcode 4.2) didUpdateToLocation
当应用程序在后台运行,并通过点击发送此更新的位置服务器的方法内的特定链路didUpdateToLocation
核心位置框架的方法。
我的问题是,将在后台运行与否,当应用程序需要一段时间后终止?
我用我的应用程序中的核心位置框架,我设置UIBackgroundMode位置字符串或从获取更新的位置所需的背景模式(在Xcode 4.2) didUpdateToLocation
当应用程序在后台运行,并通过点击发送此更新的位置服务器的方法内的特定链路didUpdateToLocation
核心位置框架的方法。
我的问题是,将在后台运行与否,当应用程序需要一段时间后终止?
没有,是this.But应用程序定义没有具体的时间必定会终止基于特定参数 - 电池消耗,内存占用的问题等。
在开发者文档是明确提到 - “系统保持悬浮在内存的应用程序,只要有可能,删除它们只有当可用内存量变得低的剩余存储空间意味着你的应用程序的后续启动速度会更快。”
通过这次访问完整的细节- http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html
我所看到的背景位置更新会为几个小时的工作。 但是,如果我去一个地方,而不接收设备将停止发送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的支持多任务处理。 如果一个应用程序块的UI和停止响应,用户可以双击从主屏幕Home键,并终止应用程序。
注意:您可能已经注意到,当你双击Home键,你也可以得到你已经在过去运行的所有应用程序的列表。 这些应用程序不一定运行,也无须暂停。
通常一个应用程序得到10分钟左右留在后台,一旦用户点击主页按钮,然后它就会由操作系统自动终止。 所以,你轻按两次Home键看到的应用列表中仅仅是一个过去的应用程序运行的列表。
当子类的UIViewController,你可能已经注意到了didReceiveMemoryWarning方法。
即在前台运行的任何应用程序在访问和使用内存方面最高优先级。 然而,这并不意味着该应用程序来获得设备上的所有可用内存 - 每个应用程序获取可用内存的一部分。
当总的内存消耗击中一定水平时,所述OS发送出UIApplicationDidReceiveMemoryWarningNotification通知。 与此同时,didReceiveMemoryWarning被调用的应用程序。
在这一点上,让您的应用程序继续正常运行,操作系统开始终止在后台的应用程序来释放一些内存。 一旦所有后台应用程序被终止,如果您的应用程序仍需要更多的内存,操作系统终止您的应用程序。
快速的答案是几乎没有。 下面虽然阅读的深度。
由于多任务已经对A)您的应用程序获得的内存分配量和b)设备限制的任务量iOS设备启用,即使用内存发生在任何给定时间的应用。 如果你把iOS设备,并打开几个应用程序,你会开始注意到你第一次打开应用程序可能已被终止并从重载viewDidLoad
。
一般来说,可以安全地说,如果你的应用程序是一个最近打开的应用程序(或者甚至如果有人经常清除多任务菜单电话),该设备将不会终止在后台应用程序。
我相信,因为这个问题是问在2012年6月,我给在2019年六月的回答这个答案也许是为其他用户有用它是笔者非常有用。
我张贴这个答案,因为每个人都在说,这是操作系统默认的行为,我们不能改变它.... BLA BLA ....。
最近,我用同样的要求工作。 之后每周2-3辛勤工作,我做到了。 对于其他用户,我为它创建一个辅助类。 我的应用程序将永远不会被OS杀死,直到位置跟踪运行。
使用HSLocationManager在活动和非活动状态的无限位置跟踪。
请参阅我的应用程序,它可以在App Store(如果位置跟踪运行的应用程序将不会被杀死OS): Capchur 。
这允许获取背景位置定位管理与更新所需的位置精度每n秒。
优点:
如果外景经理当前正在运行的操作系统绝不会杀死我们的应用程序。
定期给位置更新时,需要它(范围为2 - 秒170(由最大允许限制后台任务时间))
可自定义的定位精度和时间段。
低内存占用(Singleton类)