iOS应用程序平均在后台运行多久,直到它被杀死?

我需要通过API检查后端应用程序设置更新,因此我不确定启动时执行这种检查是否足够,或者我需要尽快应用程序到达前台。 当然,这取决于打开多less个应用程序,设备function,但是有什么关于应用程序能够在后台存活多久的一般规则,直到它被杀死? 一周?

没有一般的规则,不能给你任何时间的近似。 而且可能对你来说更重要的是系统可以给你多less次后台取指作为后台app去暂停状态。

如果我在iOS 7之前没有记错的话,那么你可以在后台请求时间,这个时间可以达到10分钟,在iOS 7上达到180秒,而且我还没有亲自检查过新版本。 无论如何,时间不能保证。

苹果告诉我们使用下面的方法

清单3-1在退出时开始后台任务

- (void)applicationDidEnterBackground:(UIApplication *)application { bgTask = [application beginBackgroundTaskWithName:@"MyTask" expirationHandler:^{ // Clean up any unfinished task business by marking where you // stopped or ending the task outright. [application endBackgroundTask:bgTask]; bgTask = UIBackgroundTaskInvalid; }]; // Start the long-running task and return immediately. dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // Do the work associated with the task, preferably in chunks. [application endBackgroundTask:bgTask]; bgTask = UIBackgroundTaskInvalid; }); } 

但是这个方法不会让它永远运行

注意:始终在启动任务时提供到期处理程序,但是如果您想知道应用程序已经运行了多less时间,请获取UIApplication的backgroundTimeRemaining属性的值。

所以你将需要使用以下技术之一

实施长期任务

对于需要更多执行时间来执行的任务,您必须请求>特定的权限才能在后台运行它们,而不会被暂停。 在iOS中,只有特定的应用程序types才能在后台运行:

  • 在后台播放可听内容的应用,例如音乐播放器应用
  • 在后台录制audio内容的应用程序
  • 随时向用户通知其位置的应用,例如导航应用
  • 支持网际协议语音(VoIP)的应用
  • 需要定期下载和处理新内容的应用程序
  • 从外部附件获得定期更新的应用程序
  • 实现这些服务的应用程序必须声明它们支持的服务,并使用系统框架来实现这些服务的相关方面。

声明这些服务可以让系统知道你使用了哪些服务,但是在某些情况下,系统框架确实会阻止你的应用程序被挂起。

在最后的方法中,你被限制在你能做的事情上

你可以阅读关于在这里执行长时间运行的任务

iOS:后台执行