UIApplication 将在后台运行多长时间

Posted

技术标签:

【中文标题】UIApplication 将在后台运行多长时间【英文标题】:how much time UIApplication is going to run in the background state 【发布时间】:2014-01-23 13:13:45 【问题描述】:

请帮我看看 UIApplication 在后台运行多长时间。比如当我们按下主页按钮等时

【问题讨论】:

【参考方案1】:

限制如下:

ios6 10 分钟 iOS7 3 分钟

就在您的应用委托实现中:

- (void)applicationDidEnterBackground:(UIApplication *)application 
    UIApplication *app = [UIApplication sharedApplication];
    __block UIBackgroundTaskIdentifier bgTask = 0;
    bgTask = [app beginBackgroundTaskWithExpirationHandler:^
              [app endBackgroundTask:bgTask];
              bgTask = UIBackgroundTaskInvalid;
          ];

在 600 秒 (iOS6) 或 180 秒 (iOS7) 之后,将调用过期处理程序 - 您必须立即完成 - 任何耗时的任务或应用都不会崩溃。

【讨论】:

【参考方案2】:

我建议你看看Background Execution and Multitasking,简单地说:

大多数应用在进入 背景。只有为用户提供重要服务的应用程序才是 允许继续运行任意时间

【讨论】:

【参考方案3】:

它运行大约 5 秒。 你也可以做一个特殊的过程来要求更多的时间来结束一个长任务(比如上传等)。

这里解释了一切:https://developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

阅读愉快:)

【讨论】:

【参考方案4】:

应用程序在后台执行代码。大多数应用程序在被暂停的过程中会短暂进入此状态。但是,请求额外执行时间的应用程序可能会在此状态下保持一段时间。此外,直接在后台启动的应用程序会进入此状态而不是非活动状态。有关如何在后台执行代码的信息,请参阅“Background Execution and Multitasking”。

已编辑:

对某些类型的后台执行的支持必须由使用它们的应用提前声明。在 Xcode 5 及更高版本中,您可以从项目设置的 Capabilities 选项卡中声明应用支持的后台模式。启用 Background Modes 选项会将 UIBackgroundModes 键添加到应用程序的 Info.plist 文件中。选择一个或多个复选框会将相应的背景模式值添加到该键。表 3-4 列出了您可以指定的背景模式以及 Xcode 分配给应用程序 Info.plist 文件中 UIBackgroundModes 键的值。

【讨论】:

以上是关于UIApplication 将在后台运行多长时间的主要内容,如果未能解决你的问题,请参考以下文章

iPhone 应用程序可以在后台运行多长时间?

后台运行之[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil]

应用程序调试 - 是啥决定了我的应用程序在后台停留多长时间?

我的应用程序将在多长时间内发布到 Google Play 商店?

后台模式更新位置多少时间

后台任务未运行