剛買了關東升老師的ios書,來記錄一下自己感覺有用的東西;
作為應用程序的委托對象,Appdeletage在應用程序的生命周期的不同階段會調用不同的方法。
首先說一下ios應用的五中狀態:
Not Running (非運行狀態)應用程序未運行或者已經終止Inactive (前台非活動狀態)應用程序進入前台狀態,但是還不能接受事件處理Active (前台活動狀態)應用程序進入前台,能接受事件Background (後台狀態)應用程序進入後台,依然能夠執行代碼。如果有可執行代碼就會繼續執行,如果沒有,會進入掛起狀態Suspended (掛起狀態) 不能執行代碼,如果系統內存不夠應用程序會被終止
ios應用程序在這些狀態轉換過程中,iOS系統會調用Appdelegate的一些方法,並且發送通知。
這裡主要說一些主要的方法;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
程序啟動並進行初始化是調用
- (void)applicationWillResignActive:(UIApplication *)application
程序從活動狀態進入非活動狀態的時候調用
- (void)applicationDidEnterBackground:(UIApplication *)application
程序進入後台時調用該方法
- (void)applicationWillEnterForeground:(UIApplication *)application
程序進入前台但是還未處於活動狀態時調用該方法
- (void)applicationDidBecomeActive:(UIApplication *)application
程序進入前台並處於活動狀態時調用
- (void)applicationWillTerminate:(UIApplication *)application
應用程序被終止時調用
以上這6個方法都是在Appdegate.m中自動生成的;
非運行狀態---啟動場景
程序啟動的時候共經歷3個狀態
Not running->Inactive->active
在Not running->Inactive 階段 系統會調用
(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
在Inactive->active階段 系統會調用
(void)applicationDidBecomeActive:(UIApplication *)application
點擊Home鍵---應用退出場景
這種情況下又分兩種情況:
1、可以在後台掛起
2、不能在回台掛起
先說第一種情況共經歷4種狀態
Active->Inactive->background->Suspended
Active->Inactive 階段調用
(void)applicationWillResignActive:(UIApplication *)application
Inactive->background階段
這個階段不會調用上面列出的方法
background->Suspended階段調用
(void)applicationDidEnterBackground:(UIApplication *)application
第二種情況
Active->Inactive->background->Suspended->Not running 五中狀態
Active->Inactive 系統不會調用上述方法,這裡與第一種情況不同
Inactive->background階段
這個階段不會調用上面列出的方法
background->Suspended階段調用
(void)applicationDidEnterBackground:(UIApplication *)application
Suspended->Not running 調用
(void)applicationWillTerminate:(UIApplication *)application
掛起重新運行場景
Suspended->background->Inactive->Active
Suspended->background 這裡不會調用上述方法
background->Inactive調用
applicationWillEnterForeground:(UIApplication *)application
Inactive->Active調用
(void)applicationDidBecomeActive:(UIApplication *)application
內存清除---應用場景終止
該應用程序處於後台運行(掛起狀態),如果系統發出低內存警告的時候,為了滿足其他應用對內存的需求,就會清除內存終止程序。
background->Suspended->Not running(background->Suspended是程序運行完代碼後進入掛起狀態)
在這種情況下系統不會調用任何方法;