APP、APP與ViewController
- 啟動(dòng)app
?? ----- didFinishLaunchingWithOptions
?? ---------- viewDidLoad
?? ---------- viewWillAppear
?? ---------- viewWillLayoutSubviews
?? ---------- viewDidLayoutSubviews
?? ---------- viewDidAppear
?? ----- applicationDidBecomeActive
總結(jié):
1,整體順序是:app加載 → 根視圖控制器加載 → app活躍
2,注意:app活躍是發(fā)生在根視圖控制器DidAppear之后的
3,注意:在app的啟動(dòng)過(guò)程中是沒(méi)有將要進(jìn)入前臺(tái)(applicationWillEnterForeground)這個(gè)步驟的
- 單擊Home鍵,app進(jìn)入后臺(tái)
?? ----- applicationWillResignActive
?? ----- applicationDidEnterBackground
總結(jié):
1,整體順序是:app將不活躍 → app進(jìn)入后臺(tái)
2,注意:在app進(jìn)入后臺(tái)的過(guò)程中,ViewController是不參與其中的,也就是說(shuō)當(dāng)前屏幕上顯示的ViewController并不會(huì)調(diào)用視圖控制器將要消失(viewWillDisappear) 和 視圖控制器已經(jīng)消失(viewDidDisappear)
- 點(diǎn)擊APP桌面圖標(biāo),app進(jìn)入前臺(tái)
?? ----- applicationWillEnterForeground
?? ----- applicationDidBecomeActive
總結(jié):
1,整體順序是:app將要進(jìn)入前臺(tái) → APP活躍
2,注意:跟app進(jìn)入后臺(tái)一樣,在該過(guò)程中,ViewController是不參與其中的,在屏幕上出現(xiàn)的ViewController并不會(huì)調(diào)用視圖控制器將要顯示(viewWillAppear) 和 視圖控制器已經(jīng)顯示(viewDidAppear)
- app鎖屏
?? ----- applicationWillResignActive
?? ----- applicationDidEnterBackground
總結(jié):
1,app鎖屏操作所產(chǎn)生的生命周期跟app進(jìn)入后臺(tái)是相同的
- app解鎖
?? ----- applicationWillEnterForeground
?? ----- applicationDidBecomeActive
總結(jié):
1,app解鎖操作所產(chǎn)生的生命周期跟app進(jìn)入前臺(tái)是相同的
- app銷(xiāo)毀
?? ----- applicationWillResignActive
?? ----- applicationDidEnterBackground
?? ----- applicationWillTerminate
總結(jié):
1,整體順序是:app將不活躍 → app進(jìn)入后臺(tái) → app將要銷(xiāo)毀
2,注意:這個(gè)過(guò)程ViewController同樣是不參與的
- 雙擊Home鍵,由app進(jìn)入app卡片列表
?? ----- applicationWillResignActive
總結(jié):
1,在app進(jìn)入app卡片列表的過(guò)程中,僅有一步被調(diào)用:app將不活躍(applicationWillResignActive)
2,注意:如果此時(shí),用戶在app卡片列表中選擇了其他app,接下來(lái)會(huì)調(diào)用:app進(jìn)入后臺(tái)(applicationDidEnterBackground)
3,注意:如果此時(shí),用戶點(diǎn)擊Home鍵,app由app卡片列表重新回到前臺(tái),接下來(lái)會(huì)調(diào)用:app活躍(applicationDidBecomeActive),要注意的是在這個(gè)過(guò)程中并不會(huì)調(diào)用app將要進(jìn)入前臺(tái)(applicationWillEnterForeground)
ViewController與ViewController
- vc1 PushTo / PresentTo vc2
?? -----vc2----- viewDidLoad
?? -----vc1----- viewWillDisappear
?? -----vc2----- viewWillAppear
?? -----vc2----- viewWillLayoutSubviews
?? -----vc2----- viewDidLayoutSubviews
?? -----vc2----- viewDidAppear
?? -----vc1----- viewDidDisappear
?? -----vc1----- presentViewCompleted (optional)
//[self dismissViewControllerAnimated:YES completion:^{
NSLog(@"-----vc2-----dismissViewControllerCompleted");
}];
- vc2 PopTo / DismissTo vc1
?? -----vc2----- viewWillDisappear
?? -----vc1----- viewWillAppear
?? -----vc1----- viewDidAppear
?? -----vc2----- viewDidDisappear
?? -----vc2----- dismissViewControllerCompleted (optional)
//[self dismissViewControllerAnimated:YES completion:^{
NSLog(@"-----vc2-----dismissViewControllerCompleted");
}];
?? -----vc2----- dealloc
Demo地址:https://github.com/MajorLMJ/LMJTest_APPLifeCycle
版權(quán)聲明:出自MajorLMJ技術(shù)博客的原創(chuàng)作品 ,轉(zhuǎn)載時(shí)必須注明出處及相應(yīng)鏈接!