小部件生命周期由 iOS 本身管理。
当您进入后台时,系统会为您今天的小部件拍摄快照。系统管理后台获取(小部件的后台生命周期),它会widgetPerfomrUpdateWithComplationHandler:
尽可能地调用更新小部件数据并每次拍摄快照。当你再次打开它时,它会首先加载最新的快照,然后再加载实时数据。
小部件内容更新
更新内容
Today 扩展点提供了用于管理小部件状态和处理其内容更新的 API(您可以在通知中心框架参考中阅读有关此 API 的信息)。尽管 Today API 存在一些特定于平台的差异,但两个平台支持的功能基本相同。
为了帮助您的小部件保持最新状态,系统有时会捕获小部件视图的快照。当小部件再次可见时,将显示最近的快照,直到系统将其替换为视图的实时版本。
要在拍摄快照之前更新小部件的状态,请务必遵守 NCWidgetProviding 协议。当您的小部件收到 widgetPerformUpdateWithCompletionHandler: 调用时,使用最新内容更新小部件的视图并调用完成处理程序,使用以下常量之一来描述更新结果:
NCUpdateResultNewData
——新内容需要你重新绘制视图
NCUpdateResultNoData
— 小部件不需要更新
NCUpdateResultFailed
——更新过程中出现错误
参考今日小工具
通知中心数据更新
通知中心
笔记
widgetPerformUpdateWithCompletionHandler: 的时间表和预期用途旨在作为所有数据/模型更新逻辑的方便之家。如果实施,系统将在适当的时候调用小部件以更新其状态,无论是在通知中心可见时还是在后台。需要一个实现来启用后台更新。预计小部件将执行异步更新工作并尽可能多地脱离主线程。当工作完成时,小部件应该调用参数块,传递适当的 NCUpdateResult。小部件不应阻止从 viewWillAppear: 返回此操作的结果。相反,小部件应该在 viewWillAppear: 中加载缓存状态,以匹配上一个 viewWillDisappear: 中的视图状态,
参考iOS 8.1 通知中心
小部件生命周期
参考:应用扩展的生命周期