iOS – App的生存周期

从设备开机说起:~

  • 当用户打开iPhone,除了操作系统的App在运行时没有其他的App在运行。当用户点击App图标,SpringBoard会来启动的App。

    • SpringBoard是一个系统标准的应用程序来管理iPhone的主屏幕(home screen)。也包括管理窗口服务、启动应用程序和一些设备的设置问题。
  • SpringBoard打开App的启动屏幕(launch screen)时,系统会加载你的App和必要的相关的库到内存中。最后你的App会开始执行并且应用委托(application delegate, AppDelegate)会收到通知。

    • AppDelegate是一个委托对象。继承自UIResponder类,并且实现UIApplicationDelegate委托协议
  • iOS App的入口是UIApplicationDelegate。这是一个协议,并且你需要在你的App里实现它,这一你可以得到程序启动、转入后台/前台等等。

  • UIResponder类使AppDelegate可以对用户行为进行响应。并且UIApplicationDelegate可以使AppDelegate成为一个应用委托的对象来管理和回应应用程序的生命周期。

Apps的执行状态:-

  • 未运行状态(Not Running state): app 还未被运行或者被系统终止
  • 未激活状态(Inactive state): app 正要进入前台,但是没有收到事件
  • 激活状态(Active state): app 进入前台并且可以处理事件
  • 后台状态(Background state): 在这种状态下,如果有正在执行的代码,那么会继续执行;如果没有执行的代码抑或是执行完毕,那么app会被悬挂。
  • 悬挂状态(Suspended state): app 在后台(也就死在内存)但是没有执行的代码,并且系统如果没有足够多的内存,那么会终止app

image.png

image.png

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享