Jor*_*ack 18 objective-c background-process ios
您的应用程序在后台完成其操作后取则必须调用completionHandler块与三一点UIBackgroundFetchResult的状态:UIBackgroundFetchResultNoData,UIBackgroundFetchResultNewData或UIBackgroundFetchResultFailed.
一旦调用完成处理程序,操作系统如何处理这三个结果中的每一个?
Lom*_*baX 15
调用应用程序:performFetchWithCompletionHandler:您的委托方法时,使用该方法检查新内容并下载该内容(如果可用).下载完成后,执行提供的完成处理程序块,传递指示内容是否可用的结果.执行此块会告诉系统它可以将您的应用程序移回暂停状态并评估其耗电量.下载少量内容的应用程序可以快速准确地反映出下载内容的时间比将下载内容的时间更长的应用程序更有可能获得执行时间
他们没有给我们这么多细节,但我认为很清楚:你将获取的结果传递给系统,因此它可以决定何时给出后台执行时间(以及多少).
例如,考虑两个不同的应用程序:
- 一个下载每晚更新的文件
- 另一个下载更频繁更新的文件,一天多次
在这两种情况下,系统都会唤醒您的应用程序,记下开始时间,您的应用程序开始下载,然后告诉系统有可用的内容.
一段时间后,您将看到系统将比第二个应用程序更少地唤醒第一个应用程序,从而优化电池消耗.
此外,如果您使用NSURLSession开始下载,系统将评估您的应用程序的功耗(因为使用NSURLSession,您有"无限"时间下载文件),甚至此度量标准用于决定唤醒您的应用程序的频率.
| 归档时间: |
|
| 查看次数: |
4740 次 |
| 最近记录: |