ios - Background Fetch iOS - 已终止的应用程序

标签 ios ios7 background background-task background-fetch

我想这可能会安静地回答几次,但仍然有一些我想澄清的未知案例。

我一直在为我的一个 iOS 应用程序查看 Background Fetch API。我从几篇文章中了解到,当操作系统决定检查是否有来自后端服务器的任何新数据时,将调用 fetchNewDataWithCompletionHandler(无论我们设置的自定义获取间隔如何)。文章和教程说只有当您的应用程序处于非事件/后台/暂停状态时才会调用它,而不是当用户从应用程序切换器强制终止应用程序时。

但我的问题是;

  1. 在 WWDC 2013 视频中,讲师说:

There are two very important scenario to test, first scenario is when your app launched in background to fetch new content, and second one is your app resumed in background to fetch new content.

我认为第二种情况是应用程序从后台/暂停状态恢复。但第一种情况是什么?我们的应用将从哪个状态在后台“启动”以获取数据?从非运行状态?

  1. 要测试后台提取,有两种选择,一种是使用“由于后台提取启动”创建新方案,另一种是通过调试/模拟后台提取。我认为第二个是在应用程序处于后台或挂起时模拟后台获取。但是第一种情况是什么?是否与应用程序何时未运行(从应用程序切换器中删除)有关?

有什么想法吗?

谢谢!!

最佳答案

第一种情况是您的应用当时没有运行。 iOS 已决定为您的应用程序提供一些运行时间,但您的应用程序尚未启动。

如果手机最近重新启动(因此您的应用程序从未启动过),或者如果您的应用程序因为其他事情需要内存而被终止,则很可能会发生这种情况。如果用户启动许多其他大型应用程序(例如游戏),那么您的应用程序最终将被逐出内存。

如果用户使用应用程序切换器终止应用程序,这将永远不会发生;如果用户终止了该应用程序,那么 iOS 将不会重新启动它,因为它假定用户希望它保持死状态。

关于ios - Background Fetch iOS - 已终止的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30290092/

相关文章:

ios - id <SampleProtocolDelegate> 委托(delegate)与 id <SampleProtocolDelegate> _delegate

html - 背景图片全高

ios - 从存档构建时 CADisplayLink 断断续续

ios - IPv6 - 应用被拒绝

ios - 将 UIKit 的 UIScrollView 与 SpriteKit 结合使用

ios - 资源包中的 Assets 目录

ios - 使 UIImage 的一部分透明,或裁剪该区域

ios - SL在iOS中的SLComposeViewController中代表什么?

JQuery 背景动画 - 这是正确的方法吗?

javascript - 将随机 css 颜色更改为一个 DIV 的背景和另一个 DIV 的边框顶部颜色