我正在为应用程序工作一个可可触摸静态库,该库具有在一段时间内通过 NSOperation 下载网络资源的功能,并提供一些方法。
我知道 IOS 应用程序进入后台是有限的,(比如主线程 5 秒,长任务 10 分钟......)所以我想知道如果某些应用程序使用了我在后台输入的库,我的库的周期下载任务会被终止还是活着?并且该应用程序还成功使用了我的库的功能?
我正在为应用程序工作一个可可触摸静态库,该库具有在一段时间内通过 NSOperation 下载网络资源的功能,并提供一些方法。
我知道 IOS 应用程序进入后台是有限的,(比如主线程 5 秒,长任务 10 分钟......)所以我想知道如果某些应用程序使用了我在后台输入的库,我的库的周期下载任务会被终止还是活着?并且该应用程序还成功使用了我的库的功能?
将移动到后台想象为让您的应用程序“冻干” - 在那一刻所有状态都被冻结。当您的应用程序移动到前台时,应用程序开始使用现在有些过时的信息运行。NSTimers 等将继续工作,但最后一次射击和下一次射击之间的“差距”将是巨大的。[我相信(但不记得肯定)如果你将计时器设置为 2 分钟,然后你在剩下 1 分钟的时候进入后台比如说 10 分钟,当你移到前台时,计时器会立即触发]。
我最终做的是保留一个具有最后一次触发时间的 NSDate 对象——这样我就可以检测到由于移动到后台而导致的大间隙——并采取适当的措施。
请注意,正在进行的网络提取等应该只返回超时状态 - 但同样,如果您在启动提取时保留 NSDate,您可以检测到这种情况。