前言
对App的生命周期和相关的方法触发做个笔记。
程序的生命周期
应用程序的状态:
- Not running未运行:程序没启动。
- Inactive未激活:程序在前台运行,不过没有接收到事件。在没有事件处理情况下程序通常停留在这个状态。
- Active激活:程序在前台运行而且接收到了事件。这也是前台的一个正常的模式。
- Backgroud后台:程序在后台而且能执行代码,大多数程序进入这个状态后会在在这个状态上停留一会。时间到之后会进入挂起状态(Suspended)。有的程序经过特殊的请求后可以长期处于Backgroud状态。
- Suspended挂起:程序在后台不能执行代码。系统会自动把程序变成这个状态而且不会发出通知。当挂起时,程序还是停留在内存中的,当系统内存低时,系统就把挂起的程序清除掉,为前台程序提供更多的内存。
生命周期:
- application didFinishLaunchingWithOptions:当应用程序启动时执行,应用程序启动入口,只在应用程序启动时执行一次。若用户直接启动,lauchOptions内无数据,若通过其他方式启动应用,lauchOptions包含对应方式的内容。
- applicationWillResignActive:在应用程序将要由活动状态切换到非活动状态时候,要执行的委托调用,如 按下 home 按钮,返回主屏幕,或全屏之间切换应用程序等。
- applicationDidEnterBackground:在应用程序已进入后台程序时,要执行的委托调用。
- applicationWillEnterForeground:在应用程序将要进入前台时(被激活),要执行的委托调用,刚好与applicationWillResignActive 方法相对应。
- applicationDidBecomeActive:在应用程序已被激活后,要执行的委托调用,刚好与applicationDidEnterBackground 方法相对应。
- applicationWillTerminate:在应用程序要完全推出的时候,要执行的委托调用,这个需要要设置UIApplicationExitsOnSuspend的键值。
方法触发
- 初次启动:
1 | iOS_didFinishLaunchingWithOptions |
- 按下home键:
1 | iOS_applicationWillResignActive |
- 点击程序图标进入:
1 | iOS_applicationWillEnterForeground |
- 点击通知进入:
1 | applicationWillEnterForeground application:didReceiveRemoteNotification applicationDidBecomeActive |
- 从其他APP切回来
1 | applicationWillEnterForeground application:openURL:sourceApplication applicationDidBecomeActive |