AppDelegate 內的方法在APP生命週期觸發的時機和順序

首先介紹一下各個方法觸發的時機
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
   
// Override point for customization after application launch.
   DebugLog(@"程序載入完成後執行");
//launchOptions 這個參數使用來表示app啓動方式的
//如果launchOptions爲nil 則表示用戶通過點擊App圖標正常啓動的
   
return YES;
}

-(
void)applicationDidReceiveMemoryWarning:(UIApplication*)application{
   
DebugLog(@"系統內存不足,需要清理工作");

}
- (
void)applicationWillResignActive:(UIApplication*)application {
   
DebugLog(@“程序即將進入非活動狀態的時候執行此方法,即後臺運行);
/*
此方法執行的時機:
    1)在單擊Home鍵後,APP即將進入後臺時,執行此方法
    2)在下拉通知欄,或上拉工具欄時,執行此方法
    3)雙擊Home鍵,切換任務欄時會執行此方法
    4)應用間切換
*/
}


- (
void)applicationDidEnterBackground:(UIApplication*)application {
   
DebugLog(@"如果程序支持後臺運行,則後臺已進入後臺運行");//如果需要退出後臺,則加入exit(0)
/*
此方法執行的時機:
    1)在APP真正進入後臺後,會觸發該方法,通過單擊Home鍵觸發進入後臺纔會執行
    2)應用間切換

*/

}


- (
void)applicationWillEnterForeground:(UIApplication*)application {
   
DebugLog(@"程序即將進入活動狀態,即在進入前臺之前");
/*
此方法執行的時機:
    1)在APP真正從後臺進入前臺,會觸發該方法,通過單擊Home鍵觸發進入後臺,再進入前臺後纔會執行
    2)應用間切換
*/
}


- (
void)applicationDidBecomeActive:(UIApplication*)application {
   
DebugLog(@"程序已進入活躍狀態,即進入前臺);
/*
此方法執行的時機:
    1)在單擊Home鍵後,APP即將進入後臺再進前臺時,執行此方法
    2)在下拉通知欄,或上拉工具欄時,執行此方法
    3)雙擊Home鍵,切換任務欄時會執行此方法
    4)應用間切換
    6)在每次APP啓動的時候,在執行完didFinishLaunchingWithOptions 後執行

*/
}


- (
void)applicationWillTerminate:(UIApplication*)application {
   
DebugLog(@"程序即將退出,用於保存數據和清理工作");
/*
此方法執行的時機:是在程序徹底退出時執行此方法,如雙擊home鍵殺死、系統因內存不足殺掉該程序進程

*/

}
-(
void)applicationSignificantTimeChange:(UIApplication*)application{

   
DebugLog(@"系統時間發生改變的時候");


}
-(
void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{
   
//推送消息時獲取設備的tokenID

}
- (
void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(nonnullNSError *)error{
   
//deviceToken 獲取失敗時做相應處理

}
-(
void)application:(UIApplication*)application didReceiveRemoteNotification:(nonnullNSDictionary *)userInfo{
//接收到推送消息

}
爲了便於理解,我把APP後後臺狀態分爲兩類:
       1)單擊Home鍵,或者從此APP通過連接或者推送通知跳轉其他APP時,此APP只要沒被系統殺掉進程,此時就處於後臺運行的狀態。四個方法都會按順序觸發:applicationWillResignActive—-
applicationDidEnterBackground——applicationWillEnterForeground—applicationDidBecomeActive(從前臺切後臺再到前臺執行的順序)
    2)我把下拉通知欄,消息、短信的推送通知,上拉工具欄,雙擊home鍵切換任務欄看做一類,此類動作會導致APP進入一個區別於真正切入後臺的狀態,爲了方便理解我稱它爲僞後臺狀態。此類狀態在與前臺狀態切換時,只會觸發applicationWillResignActive:和applicationDidBecomeActive兩個方法.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章