無論是Apple app或者Apple Watch app 掌握整個應用的生命週期尤為重要.
下圖是watch app整個生命週期圖
![圖一.png](https://i.iter01.com/images/1687f37b3adafab9dd0e6b8bc4839c0f6c895a5c54d12037bdf6081ff8a87e30.png)
![圖二.png](https://i.iter01.com/images/e2542b1af9973395e1bd09065b161c73aaed6d81324cc87c540e728e12a6f912.png)
![圖三.png](https://i.iter01.com/images/8d003687f42cd7d1471143447203b9bb5ca2f358100083c2b15dab671995d0af.png)
watchOS生命週期中在程式碼中是怎麼實現的呢? 當使用者在Home 介面點選app, watchOS 就把它啟動,WatchOS先找到app的Info.plist 檔案中key為WKExtensionDelegateClassName所對應的檔案。如圖三中所對應的檔案為ExtensionDelegate.swfit。此時app進入前臺模式。如圖一app進入Foreground模式. 圖一中A.B.C在ExtensionDelegate.swfit所對應的方法。
- A. The applicationDidFinishLaunching method is called.-->app啟動時候呼叫.
- B. The applicationDidBecomeActive or applicationWillResignActive method is called.-->app從閒置狀態到活動狀態.
- C. The applicationWillEnterForeground or applicationDidEnterBackground method is called.-->app進入後臺模式.
WKInterfaceController 生命週期
![圖四.png](https://i.iter01.com/images/b3052da227aa3e2b4aa15931c98c828d346b8a55ff2f04482fb1b5630c80c833.png)
如圖四所示: app啟動後WatchOS會自動載入WatchKit 中Interface.storyboard中的Initial Controller 調完之後會初始化UI然後會呼叫WKInterfaceController中生命週期
- (void)awake(withContext context: Any?);
- (void)willActivate();
- (void)didDeactivate();
複製程式碼
- awake(withContext context: Any?):類似UIViewcontroller中的viewDidLoad:方法,用來配置interface controller。初始化相關的放在這裡。
- willActivate:介面將要顯示給使用者時會被呼叫,類似UIViewcontroller中viewWillAppear:方法。這個方法主要用來對檢視進行一些小的調整,初始化還是要放在init和awake(withContext context: Any?):裡
- didDeactivate:用來清空介面,程式進入不活動狀態。可以用它來終止Timer或者stop動畫。在這個方法不能再對介面進行操作。
#####想隨時瞭解我的動態,歡迎大家關注我的個人公眾號蟻農之家
![蟻農之家.jpg](https://i.iter01.com/images/80691375e1c17b8a3d0552dee7bb12a6350fe3c0a9c12233064a58bb87509ad1.jpg)