ViewController的混合生命周期

1、App、App與ViewController
  • 啟動App
----didFinishLaunchingWithOptions
----viewDidLoad
----viewWillAppear
----viewWillLayoutSubviews
----viewDidLayoutSubViews
----viewDidAppear
----applicationDidBecomeActive

總結(jié):
1,整體順序是:app加載 → 根視圖控制器加載 → app活躍
2,注意:app活躍是發(fā)生在根視圖控制器DidAppear之后的
3,注意:在app的啟動過程中是沒有將要進入前臺(applicationWillEnterForeground)這個步驟的


  • 單擊Home鍵,app進入后臺/ app鎖屏
----- applicationWillResignActive
----- applicationDidEnterBackground

總結(jié):
1,整體順序是:app將不活躍 → app進入后臺
2,注意:在app進入后臺的過程中,ViewController是不參與其中的,也就是說當前屏幕上顯示的ViewController并不會調(diào)用視圖控制器將要消失(viewWillDisappear) 和 視圖控制器已經(jīng)消失(viewDidDisappear)


  • 點擊APP桌面圖標,app進入前臺/app解鎖
---- applicationWillEnterForeground
---- applicationDidBecomeActive

總結(jié):
1,整體順序是:app將要進入前臺 → APP活躍
2,注意:跟app進入后臺一樣,在該過程中,ViewController是不參與其中的,在屏幕上出現(xiàn)的ViewController并不會調(diào)用視圖控制器將要顯示(viewWillAppear) 和 視圖控制器已經(jīng)顯示(viewDidAppear)


  • app銷毀
---- applicationWillResignActive
---- applicationDidEnterBackground
---- applicationWillTerminate

總結(jié):
1,整體順序是:app將不活躍 → app進入后臺 → app將要銷毀
2,注意:這個過程ViewController同樣是不參與的


  • 雙擊Home鍵,由app進入app卡片列表
---- applicationWillResignActive

總結(jié):
1,在app進入app卡片列表的過程中,僅有一步被調(diào)用:app將不活躍(applicationWillResignActive)
2,注意:如果此時,用戶在app卡片列表中選擇了其他app,接下來會調(diào)用:app進入后臺(applicationDidEnterBackground)
3,注意:如果此時,用戶點擊Home鍵,app由app卡片列表重新回到前臺,接下來會調(diào)用:app活躍(applicationDidBecomeActive),要注意的是在這個過程中并不會調(diào)用app將要進入前臺(applicationWillEnterForeground)


2. 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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容