从Watchkit应用程序退出是由Watchkit操作系统本身处理的,我不需要清除或重置屏幕?

好吧,这是非常基本的,但我一遍又一遍地阅读文档,并希望确保我有这个权利。 用简单的语言,我的watchkit应用程序将被一些用户交互closures,退出应用程序,这是我的代码外部的,对吧? 我不需要用任何一种closures程序来清除或重新设置屏幕,以便进行另一次运行。 我不需要build立一个“退出”或“closures应用程序”的例程,对吧? 这是令人困惑的,因为文档意味着应用程序将不再在屏幕上停用(大概是通过用户动作,如滑动到另一个应用程序),这将调用didDeactivate函数。 但是文件也声称:

在iOS模拟器中,当您通过select硬件>lockinglocking模拟器时,WatchKit将调用当前接口控制器的didDeactivate方法。 当您随后解锁模拟器时,WatchKit再次调用该接口控制器的willActivate方法。 您可以使用此function来debugging您的激活和停用代码。

但模拟器似乎不会释放内存或重置variables或以任何方式重置我的应用程序。 在locking的状态下,它在屏幕上保持不变,当我解锁时它会回到这个状态。 我担心的是,如果我弄错了,我有一个应用程序可以运行一次。 但是我没有看到关机,屏幕清理或常规关机程序中所需的任何元素的例程。

我同意文件可能会令人困惑。 想想最简单的方法是,只要您的界面控制器显示/激活,就会调用willActivate。 同样,每当隐藏/停用时,都会调用didDeactivate。 所以,如果你翻阅控制器页面,当它出现时,每个控制器都会收到一个willActivate,当它消失的时候会收到一个didActivate。 同样,如果控制器因为应用程序不再可见而被停用(例如暂停),则将调用didDeactivate。 如果用户然后抬起手腕来恢复应用程序,将调用willActivate,因为正在显示界面控制器。

没有承诺您的WatchKit应用程序是否将被暂停或终止(取决于操作系统),所以您必须考虑两种可能性。 基于经验,我知道放弃你的arm将暂停您的应用程序之前调用didDeactivate。 如果您然后举起手腕,应用程序将恢复并调用willActivate。 在我的testing中,这种情况下,应用程序被暂停(不终止)。

你没错,应用程序终止时没有内置的方法。 但是,iOS 8.2添加了四个可用于监视应用/扩展状态的通知:

  • NSExtensionHostDidBecomeActiveNotification
  • NSExtensionHostDidEnterBackgroundNotification
  • NSExtensionHostWillEnterForegroundNotification
  • NSExtensionHostWillResignActiveNotification