如今有一個需求:app
在應用進入後臺的時候把用戶數據歸檔,應用再次展現的時候進行解檔,從中取出數據代理
在appdalegate裏有四個相關代理方法code
- (void)applicationWillResignActive:(UIApplication *)application //應用即將進入後臺 - (void)applicationDidEnterBackground:(UIApplication *)application //應用已經進入後臺 - (void)applicationWillEnterForeground:(UIApplication *)application //應用即將回到前臺 - (void)applicationDidBecomeActive:(UIApplication *)application//應用已經回到前臺
這時候問題來了:blog
進入後臺的時候,應該調用applicationWillResignActive,仍是applicationDidEnterBackground內存
進入前臺的時候,應該調用applicationWillEnterForeground,仍是applicationDidBecomeActiveio
在使用home鍵或者iPhoneX上滑退出的時候,沒有什麼區別class
可是,在從應用進入多任務後臺時,applicationWillResignActive調用,applicationDidEnterBackground沒有調用,而後在多任務後臺又點擊應用進入,applicationWillEnterForeground調用,applicationDidBecomeActive不掉用後臺
而在這期間,咱們的應用通常是不會由於內存問題退出的,在applicationWillResignActive裏歸檔沒有太大意義方法
在有電話的時候也是一樣的數據
因此咱們能夠把歸檔放在applicationDidEnterBackground裏
同理把解檔放在applicationDidBecomeActive裏
另外,applicationWillTerminate是應用在被清除的時候調用的,歸檔方法在這裏也要被調用
ps:這個需求實際上是個僞需求,用戶信息歸檔應該在獲取用戶信息和用戶信息變動的時候進行的,不會放在代理裏面
解檔會在代理進行