从设备开机说起:~
-
当用户打开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
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END