剛買了關東升老師的ios書,來記錄一下自己感覺有用的東西;
作為應用程序的委托對象,Appdeletage在應用程序的生命周期的不同階段會調用不同的方法。
首先說一下ios應用的五中狀態:
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
這種情況下又分兩種情況: 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是程序運行完代碼後進入掛起狀態) 在這種情況下系統不會調用任何方法;