执行后台获取时不一直返回 UIBackgroundFetchResultNewData 的缺点是什么?

What is the downside of not returning UIBackgroundFetchResultNewData all the time when performing background fetch?

我刚刚在我的 iOS 应用程序中实现了后台获取。我在我的应用委托中实现了这个方法:

- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

正确的实现方式是在有新数据时调用completionHandler(UIBackgroundFetchResultNewData),在没有新数据可下载时调用completionHandler(UIBackgroundFetchResultNoData)

然而,并非所有网络服务都可以提供此信息。其中一些只是要求开发人员一直获取新数据,即使没有新数据。在这种情况下,在每次后台提取时调用 completionHandler(UIBackgroundFetchResultNewData) 的缺点是什么?

调用 completionHandler(UIBackgroundFetchResultNewData) 的一个副作用是拍摄了 UI 的快照,这样当用户切换回您的应用时,UI 会立即更新。

根据您获取数据的频率以及它是(或不是)新数据的可能性,由于在缓存中不必要地捕获和保存快照,这可能会导致一些适度的性能下降。如果您的应用已经突破了性能和电池使用的界限,那么可能值得研究在 Web 服务方面进行更改。