一、APP的生命状态:
- Not running(未运行):程序未运行
- Inactive(未激活):程序在前台运行,但没有接收到事件。在没有事件处理情况下程序通常停留在这个状态。
- Active ( 激活 ): 程序在前台运行而且接收到了事件。这也是前台的一个正常的模式。
- Backgroud ( 后台 ): 程序在后台而且能执行代码,大多数程序进入这个状态后会在在这个状态上停留一会。时间到之后会进入挂起状态(Suspended)。有的程序经过特殊的请求后可以长期处于Backgroud状态。
- Suspended ( 挂起 ): 程序在后台但是却不能执行代码。系统会自动把程序变成这个状态而且不会发出通知。当挂起时,程序还是停留在 内存中的,当系统内存低时,系统就把挂起的程序清除掉,为前台程序提供更多的内存。
二、 关于app生命周期中的各方法的调用顺序
func applicationDidBecomeActive(UIApplication)
// app已经被激活
func applicationWillResignActive(UIApplication)
// app即将被挂起
func applicationDidEnterBackground(UIApplication)
// app已经进入后台
func applicationWillEnterForeground(UIApplication)
// app即将回到前台
func applicationWillTerminate(UIApplication)
// app即将被杀死
App运行过程中 状态变化 对应的方法
application(_:willFinishLaunchingWithOptions:)
application(_:didFinishLaunchingWithOptions:)
applicationDidBecomeActive(UIApplication)
application:didReceiveRemoteNotification//接受处理消息通知
applicationWillResignActive(UIApplication)
applicationDidBecomeActive(UIApplication)
applicationWillResignActive(UIApplication)
applicationDidEnterBackground(UIApplication)
applicationWillEnterForeground(UIApplication)
applicationDidBecomeActive(UIApplication)
applicationWillResignActive(UIApplication)
applicationDidEnterBackground(UIApplication)
- 点击通知中心里面的远程推送,使App从后台 进入前台
applicationWillEnterForeground(UIApplication)
application:didReceiveRemoteNotification // 接收、处理消息通知
applicationDidBecomeActive(UIApplication)
applicationWillTerminate(UIApplication)
- 从APP切换到微信之类的其他应用之后,再切换回来时
applicationWillEnterForeground(UIApplication)
application:openURL:sourceApplication // 应用间传值
applicationDidBecomeActive(UIApplication)
UIApplicationDelegate里面最常用的几个函数执行顺序小结