根据苹果关于 widgetPerformUpdateWithCompletionHandler: 的说法,当小部件不可见时,iOs Widget 也可以更新其内容。
在我的调试会话中,我注意到每次通知中心视图消失时,dayViewController 都会被释放,所以我的问题是:
如果我的 TodayViewController 被释放,它如何响应 widgetPerfomrUpdateWithComplationHandler ?
我需要小部件每小时更新其内容(如果它不可见),我该怎么做?
iOs 小部件的生命周期如何?
请帮帮我 :)
谢谢
小部件生命周期由 iOS 本身管理。
当您进入后台时,系统会拍摄您今天的小部件的快照。系统管理后台获取(小部件的后台生命周期),它会调用widgetPerfomrUpdateWithComplationHandler:
用于尽可能更新您的小部件数据并每次拍摄快照。当您再次打开它时,它将首先加载最新的快照,然后加载实时数据。
小部件内容更新
更新内容
Today 扩展点提供了用于管理小部件状态的 API
并处理对其内容的更新(您可以在
通知中心框架参考)。虽然有几个
Today API 中特定于平台的差异、功能
两个平台上支持的内容基本相同。
为了帮助您的小部件查找最新信息,系统偶尔会捕获
小部件视图的快照。当小部件变得可见时
再次显示最近的快照,直到系统更换
它具有实时版本的视图。
要在拍摄快照之前更新小部件的状态,请务必
符合NCWidgetProviding协议。当你的小部件收到
widgetPerformUpdateWithCompletionHandler: 调用,更新你的
小部件的视图包含最新内容并调用完成
处理程序,使用以下常量之一来描述结果
更新内容:
NCUpdateResultNewData
——新内容需要你重新绘制视图
NCUpdateResultNoData
- 小部件不需要更新
NCUpdateResultFailed
——更新过程中出现错误
参考今日小工具
通知中心数据更新
通知中心
Note
时间表和预期用途
widgetPerformUpdateWithCompletionHandler:旨在作为一种方便的
所有数据/模型更新逻辑的主页。如果实施,该系统将
在适当的时间调用小部件来更新其状态,无论是在
通知中心在后台可见。一个
需要实施才能启用后台更新。预计
小部件将执行异步更新工作并关闭
尽可能主线程。小部件应该调用参数
当工作完成时阻塞,传递适当的
NC更新结果。小部件不应阻止从
viewWillAppear:关于此操作的结果。相反,小部件
应该在 viewWillAppear: 中加载缓存状态以匹配
视图的状态来自最后一个 viewWillDisappear:,然后转换
当新数据到达时,可以顺利地接收新数据。
参考iOS 8.1 通知中心
小部件生命周期
参考:应用程序扩展的生命周期
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)