Watchkit 应用程序的退出由 Watchkit OS 本身处理,我不需要清除或重置屏幕?
Exit from a Watchkit app is handled by the Watchkit OS itself, I don't need to clear or reset screen?
好的,这是非常基本的,但我已经一遍又一遍地阅读了文档,并想确保我做对了。用通俗易懂的语言来说,我的 watchkit 应用程序将因退出我的代码外部应用程序的某些用户交互而关闭,对吗?我不需要使用任何类型的关闭程序来清除或重置屏幕,为另一个 运行 设置它?我不需要构建 "Exit" 或 "Close app" 例程,对吧?这令人困惑,因为文档暗示该应用程序一旦不再显示在屏幕上(可能是通过用户操作,例如滑动到另一个应用程序)就会停用,并且这将调用 didDeactivate 函数。但文档还声称:
In iOS Simulator, WatchKit calls the didDeactivate method for the current
interface controller when you lock the simulator by selecting Hardware > Lock.
When you subsequently unlock the simulator, WatchKit calls that interface
controller’s willActivate method again. You can use this capability to debug
your activation and deactivation code.
但是模拟器似乎没有以任何方式取消分配内存或重置变量或重置我的应用程序。它以锁定时的状态在屏幕上保持不变,并在我解锁时恢复为该状态。让我担心的是,如果我弄错了,我有一个应用程序是为一个 运行 构建的。但我没有看到关机例程、屏幕清除例程或您在常规关机例程中期望的任何元素。
我同意文档可能会令人困惑。考虑它的最简单方法是只要您的界面控制器是 displayed/activated,就会调用 willActivate。同样,只要它是 hidden/deactivated,就会调用 didDeactivate。因此,如果您翻阅控制器的页面,每个控制器在出现时都会收到一个 willActivate,在它消失时会收到一个 didDeactivate。类似地,如果控制器因为应用程序不再可见(例如它已暂停)而被停用,则会调用 didDeactivate。如果用户随后抬起手腕以恢复应用程序,则会调用 willActivate,因为正在显示界面控制器。
关于您的 WatchKit 应用程序是否会被暂停或终止(取决于 OS),我们无法保证,因此您必须考虑这两种可能性。根据经验,我知道放下手臂会在暂停应用程序之前调用 didDeactivate。如果您随后抬起手腕,应用程序将恢复并调用 willActivate。在我的测试中,应用程序在这种情况下只是暂停(未终止)。
您说得对,没有在应用程序终止时调用的内置方法。但是,iOS 8.2 添加了四个可用于监视 app/extension 状态的通知:
- NSExtensionHostDidBecomeActiveNotification
- NSExtensionHostDidEnterBackgroundNotification
- NSExtensionHostWillEnterForegroundNotification
- NSExtensionHostWillResignActiveNotification
好的,这是非常基本的,但我已经一遍又一遍地阅读了文档,并想确保我做对了。用通俗易懂的语言来说,我的 watchkit 应用程序将因退出我的代码外部应用程序的某些用户交互而关闭,对吗?我不需要使用任何类型的关闭程序来清除或重置屏幕,为另一个 运行 设置它?我不需要构建 "Exit" 或 "Close app" 例程,对吧?这令人困惑,因为文档暗示该应用程序一旦不再显示在屏幕上(可能是通过用户操作,例如滑动到另一个应用程序)就会停用,并且这将调用 didDeactivate 函数。但文档还声称:
In iOS Simulator, WatchKit calls the didDeactivate method for the current interface controller when you lock the simulator by selecting Hardware > Lock. When you subsequently unlock the simulator, WatchKit calls that interface controller’s willActivate method again. You can use this capability to debug your activation and deactivation code.
但是模拟器似乎没有以任何方式取消分配内存或重置变量或重置我的应用程序。它以锁定时的状态在屏幕上保持不变,并在我解锁时恢复为该状态。让我担心的是,如果我弄错了,我有一个应用程序是为一个 运行 构建的。但我没有看到关机例程、屏幕清除例程或您在常规关机例程中期望的任何元素。
我同意文档可能会令人困惑。考虑它的最简单方法是只要您的界面控制器是 displayed/activated,就会调用 willActivate。同样,只要它是 hidden/deactivated,就会调用 didDeactivate。因此,如果您翻阅控制器的页面,每个控制器在出现时都会收到一个 willActivate,在它消失时会收到一个 didDeactivate。类似地,如果控制器因为应用程序不再可见(例如它已暂停)而被停用,则会调用 didDeactivate。如果用户随后抬起手腕以恢复应用程序,则会调用 willActivate,因为正在显示界面控制器。
关于您的 WatchKit 应用程序是否会被暂停或终止(取决于 OS),我们无法保证,因此您必须考虑这两种可能性。根据经验,我知道放下手臂会在暂停应用程序之前调用 didDeactivate。如果您随后抬起手腕,应用程序将恢复并调用 willActivate。在我的测试中,应用程序在这种情况下只是暂停(未终止)。
您说得对,没有在应用程序终止时调用的内置方法。但是,iOS 8.2 添加了四个可用于监视 app/extension 状态的通知:
- NSExtensionHostDidBecomeActiveNotification
- NSExtensionHostDidEnterBackgroundNotification
- NSExtensionHostWillEnterForegroundNotification
- NSExtensionHostWillResignActiveNotification