美文网首页
iOS APP生命周期 和 UIViewController的生

iOS APP生命周期 和 UIViewController的生

作者: 落寞King | 来源:发表于2019-11-18 16:08 被阅读0次

应用程序的状态

Not Running:app还没运行
Inactive:app运行在前台但没有接收事件 即将活跃
Active:app运行在前台和正在接收事件 活跃中
Background:运行在后台和正在执行代码 后台
Suspended:运行在后台但没有执行代码 挂起
AppDelegate中的方法

响应app运行时重要事件,状态之间的转换

程序第一次启动后执行 didFinishLaunchingWithOptions

程序将要失去焦点时执行 applicationWillResignActive

程序得到焦点时执行 applicationDidBecomeActive

程序进入后台执行 applicationDidEnterBackground

程序进入前台执行 applicationDidEnterForeground

程序即将退出时调用 applicationWillTerminate

程序发生内存警告的时候调用 applicationDidReceiveMemoryWarning

应用程序状态切换

启动一个App 从Not running -> inactive -> active
此时调用didFinishLaunchingWithOptions方法,然后inactive切换到active,切换完成调用applicationDidBecomeActive

当App发生中断时,由active状态切换到inactive状态,此时调用applicationWillResignActive方法

当切换App时,由状态active切换到inactive,此时调用applicationWillResignActive方法;然后从inactive状态切换到running状态,此时调用applicationDidEnterBackground方法。

而当切换回本来的app时,由running状态切换到inactive状态,此时调用applicationWillEnterForeground方法,然后由inactive状态切换到active状态,调用applicationDidBecomeActive方法。

当手机锁屏时,由状态active切换到inactive,此时调用applicationWillResignActive;然后再由inactive状态切换到running状态,此时调用applicationDidEnterBackground方法。

系统常常是为其他app启动时由于内存不足而回收内存最后需要终止应用程序,但有时也会是由于app很长时间才响应而终止。如果app当时运行在后台并且没有暂停,系统会在应用程序终止之前调用applicationWillTerminate来保存用户的一些重要数据以便下次启动时恢复到app原来的状态。

ViewController的生命周期

init

如果通过xib或storyboard创建,会首先调用该方法

loadView

此时VC还未初始化,可以重写该方法自定义控制器的View,若重写逻辑,就不能调用[super loadView]

viewDidLoad

在VC的生命周期中,只会被调用一次。此时view已经初始化好,可以做一些页面初始化任务,由于此时view的bounds尚未确定,所以不适合写frame类型的布局代码,但是给视图添加约束没有影响。

viewWillAppear

VC的视图将要出现时调用,可能会调用多次,适合做一些与视图相关联的任务,适合做一些与视图出现相关联的任务,例如改变状态栏的方向、风格。

viewWillLayoutSubviews

view的子视图即将布局,触发条件是

view 被添加到视图层次中
view 的 bounds 发生了改变
调用了 - setNeedsLayout方法
调用了 - layoutIfNeeded方法

viewDidLayoutSubviews

当 view 的子视图已经布局时,此方法会被调用,触发条件同上。

viewDidAppear

视图渲染完成后调用,与viewWillAppear配套使用。

viewWillDisappear

视图即将从屏幕中消失时触发。

viewDidDisappear

视图从屏幕中消失后触发。

dealloc

视图被销毁,此处需要对你在init和viewDidLoad中创建的对象进行释放

didReceiveMemoryWarning

内存警告

相关文章

网友评论

      本文标题:iOS APP生命周期 和 UIViewController的生

      本文链接:https://www.haomeiwen.com/subject/xgdbictx.html