ViewController的混合生命周期

1、App、App与ViewController
  • 启动App
----didFinishLaunchingWithOptions
----viewDidLoad
----viewWillAppear
----viewWillLayoutSubviews
----viewDidLayoutSubViews
----viewDidAppear
----applicationDidBecomeActive

总结:
1,整体顺序是:app加载 → 根视图控制器加载 → app活跃
2,注意:app活跃是发生在根视图控制器DidAppear之后的
3,注意:在app的启动过程中是没有将要进入前台(applicationWillEnterForeground)这个步骤的


  • 单击Home键,app进入后台/ app锁屏
----- applicationWillResignActive
----- applicationDidEnterBackground

总结:
1,整体顺序是:app将不活跃 → app进入后台
2,注意:在app进入后台的过程中,ViewController是不参与其中的,也就是说当前屏幕上显示的ViewController并不会调用视图控制器将要消失(viewWillDisappear) 和 视图控制器已经消失(viewDidDisappear)


  • 点击APP桌面图标,app进入前台/app解锁
---- applicationWillEnterForeground
---- applicationDidBecomeActive

总结:
1,整体顺序是:app将要进入前台 → APP活跃
2,注意:跟app进入后台一样,在该过程中,ViewController是不参与其中的,在屏幕上出现的ViewController并不会调用视图控制器将要显示(viewWillAppear) 和 视图控制器已经显示(viewDidAppear)


  • app销毁
---- applicationWillResignActive
---- applicationDidEnterBackground
---- applicationWillTerminate

总结:
1,整体顺序是:app将不活跃 → app进入后台 → app将要销毁
2,注意:这个过程ViewController同样是不参与的


  • 双击Home键,由app进入app卡片列表
---- applicationWillResignActive

总结:
1,在app进入app卡片列表的过程中,仅有一步被调用:app将不活跃(applicationWillResignActive)
2,注意:如果此时,用户在app卡片列表中选择了其他app,接下来会调用:app进入后台(applicationDidEnterBackground)
3,注意:如果此时,用户点击Home键,app由app卡片列表重新回到前台,接下来会调用:app活跃(applicationDidBecomeActive),要注意的是在这个过程中并不会调用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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容