你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iPhone深入淺出 iOS 之生命周期

iPhone深入淺出 iOS 之生命周期

編輯:IOS開發綜合

iOS應用程序的生命周期又根據系統是否支持多線程分為兩種:
不支持多線程的iOS4之前的系統以及支持多線程的iOS4及其之後的系統。
iOS4 之前系統,app的生命周期如下所示:
step 1,點擊 app icon 或者從應用程序url(比如在Safari地址欄中輸入應用程序url)啟動應用程序。
step 2,就會進入 UIApplicationDelegate 的
- (void)applicationDidFinishLaunching:(UIApplication *)application;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
step 3, 如果是從 url 啟動的則先進入 UIApplicationDelegate 的
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;
然後再跳轉到step 4;否則直接跳轉到step 4;
step 4,進入 UIApplicationDelegate 的
- (void)applicationDidBecomeActive:(UIApplication *)application;
step 5,進入應用程序主循環,這時應用程序已經是活動的了,用戶可以與應用程序交互。
step 6,在 step 5 狀態下,如果按住 home 鍵或者進行任務切換操作,然後跳轉到 step8;
step 7,在 step 5 狀態下,應用程序被中斷(如來電,來短信),進入 UIApplicationDelegate 的
- (void)applicationWillResignActive:(UIApplication *)application;
如果用戶選擇不處理繼續留在當前應用程序,則回到 step 4;如果用戶選擇處理,則跳轉到 step8;
step 8,進入 UIApplicationDelegate 的
- (void)applicationWillTerminate:(UIApplication *)application;
當前應用程序關閉。
注:這裡所說的進入,並非真正的調用該消息,只是走流程。因為 UIApplicationDelegate的方法都是@optional的,實現了則真正執行,沒有實現則什麼也不做。

iOS4 及其之後的系統,app的生命周期如下所示:
從圖中我們可以看出,支持多線程之後,情況要復雜得多了。但總體還是有規律可循的,多了一個後台模式。
在app被中斷之後,先進入後台:
- (void)applicationDidEnterBackground:(UIApplication *)application;
在app被中斷後繼續時,要從後台模式切換到前台:
- (void)applicationWillEnterForeground:(UIApplication *)application;
注意:iOS3.2 下構建的 app 也會進入applicationDidEnterBackground:,然後立馬就關閉掉了。而iOS4.x下構建的app,進入applicationDidEnterBackground:後,不會立馬關閉掉,而是留在後台狀態。在後台狀態下,無論你是通過點擊 appicon還是任務切換回到前台,首先進入的是 applicationWillEnterForeground,然後才是applicationDidBecomeActive。
當系統內存不足時,系統會強行關閉那些尚在內存中但處於後台狀態的 app,以騰出足夠的內存供使用。但是那些被強行關閉的程序不會調用任何UIApplicationDelegate的委托方法,只會得到一個KILL信號。當我們長按appicon,強行關閉app,也是同樣的處理過程。
在iOS4及之後的系統中,在app運行過程中接電話/查看短信,應用程序不會被關閉,它會進入後台模式。我們可以雙擊 home鍵查看所有當前運行著的應用程序。

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved