iOS App生命周期及AppDelegate方法

时间:2022-02-15 18:50:00

一、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运行过程中 状态变化 对应的方法
  • 启动app:
application(_:willFinishLaunchingWithOptions:)
application(_:didFinishLaunchingWithOptions:)
applicationDidBecomeActive(UIApplication)
application:didReceiveRemoteNotification//接受处理消息通知
  • 双击home键使app上移挂起
applicationWillResignActive(UIApplication)
  • 再次双击home键使app下移归位
applicationDidBecomeActive(UIApplication)
  • 单击home键使app进入后台
applicationWillResignActive(UIApplication)
applicationDidEnterBackground(UIApplication)
  • 打开正运行在后台的app
applicationWillEnterForeground(UIApplication)
applicationDidBecomeActive(UIApplication)
  • 再次切到后台
applicationWillResignActive(UIApplication)
applicationDidEnterBackground(UIApplication)
  • 点击通知中心里面的远程推送,使App从后台 进入前台
applicationWillEnterForeground(UIApplication)
application:didReceiveRemoteNotification // 接收、处理消息通知
applicationDidBecomeActive(UIApplication)
  • 杀死App进程(终止程序)
applicationWillTerminate(UIApplication)
  • 从APP切换到微信之类的其他应用之后,再切换回来时
applicationWillEnterForeground(UIApplication)
application:openURL:sourceApplication // 应用间传值
applicationDidBecomeActive(UIApplication)

UIApplicationDelegate里面最常用的几个函数执行顺序小结