Watch App的生命周期是什么?

时间:2016-02-25 09:41:45

标签: watchkit apple-watch watch-os-2

Apple Watch应用程序中有两个WKInterfaceController子类。 第一个是另一个的入口,它们与Interface Builder的关系是nextPage。 对于每个InterfaceController中的awakeWithContextwillActivatedidDeactivate方法,我会在观看应用启动时将它们全部打印出来。

我得到了这个输出:

awakeWithcontext -> First
awakeWithContext -> Second
willActivate -> First
willActivate -> Second
didDeactivate -> Second

然后我滑到下一个InterfaceController:

willActivate -> Second
didDeactivate -> First

现在的问题是:

只要启动,Watch App中所有InterfaceControllers的所有awakeWithContext方法都会被触发吗?

willActivate方法怎么样?

2 个答案:

答案 0 :(得分:7)

watchOS应用程序的生命周期如下所述。

<强> awakeWithContext

初始化页面时,将调用awakeWithContext。这是第一个被调用的方法,还没有显示UI。

您应该在awakeWithContext中执行更新表视图的模型数组,设置属性等操作。此方法与简单类(init())中的初始值设定项非常相似,但这次是WKInterfaceController s。

第一个问题的答案:

  一旦watchOS,就会在所有页面上调用

awakeWithContext   应用程序启动。

<强> willActivate

当即将显示界面控制器时,将调用willActivate

您应该更新标签值,操作以及与那里的视图元素相关的任何其他内容。

你的第二个问题的答案:

  只要watchOS app,就会在所有页面上调用

willActivate   启动,但与awakeWithContext相反,这将被调用   一旦你查看控制器(换句话说,当你   导航到所需的界面。)

首次启动应用时,系统会调用所有控制器didDeactivate,当前除外,当转到另一个时,willActivate将在didDeactivate之前调用被称为第一个。

所以生命周期是:

所有观看次数的1- awakeWithContext

所有观点的2 willActivate

所有视图的3- didDeactivate,第一个视图除外(当前视图)

当滑到第二个时:

第二个视图的1- willActivate

第一个视图的didDeactivate

答案 1 :(得分:0)

在初始化时调用

awakeWithContext。启动后,您的观看应用中的所有网页都会调用此方法。

在即将显示接口控制器时调用

willActivate。调用第二个接口控制器willActivate后跟didDeactivate的原因是因为它是屏幕上的下一个页面。发生这种情况是为了帮助加载下一个接口控制器的相关数据,因为它很快就会出现在屏幕上。

因此,如果您有第3页接口控制器,当第二个接口控制器在屏幕上时,将调用willActivate后跟didDeactivate

willActivate上的

Apple Doc。手表上的Page-based navigation可能没有明确说明这一点,但它们总是有助于阅读。