iOS系列 基础篇 03 探究应用生命周期 目录:1. 非运行状态 - 应用启动场景2. 点击Home键 - 应用退出场景3. 挂起重新运行场景4. 内存清除 - 应用终止场景5. 结尾 本篇主要探讨的是iOS应用中各种状态的跃迁过程,建议大家通过修改AppDeleg ...
iOS系列 基础篇 03 探究应用生命周期
目录:
1. 非运行状态 - 应用启动场景
2. 点击Home键 - 应用退出场景
3. 挂起重新运行场景
4. 内存清除 - 应用终止场景
5. 结尾
本篇主要探讨的是iOS应用中各种状态的跃迁过程,建议大家通过修改AppDelegate.swift,在每个过程中添加日志输出代码,从而观察其变化。
作为应用程序的委托对象,AppDelegate类在应用程序生命周期的不同阶段会回调不同的方法。
首先,咱们先来了解一下iOS应用的不同状态和他们之间的关系,如图:
下面简要介绍一下iOS应用的5中状态:
状态名称 | 状态释义 | 状态描述 |
Not running | 非活动状态 | 应用没有运行或被系统终止。 |
Inactive | 前台非活动状态 | 应用正在进入前台状态,但是还不能接受事件处理。 |
Active | 前台活动状态 | 应用进入前台状态,能接受事件处理。 |
Background | 后台状态 | 应用进入后台后,依然能执行代码。 如果有可执行的代码,就会执行代码,如果没有可执行的代码或者将可执行的代码执行完毕,应用会马上进入挂起状态。 |
Suspended | 挂起状态 | 处于挂起状态的应用进入一种“冰冻”状态,不能执行代码。 如果系统内存不够,应用会被终止。 |
在应用状态跃迁的过程中,iOS系统会回调AppDelegate中的一些方法,并且发送一些通知。
实际上,在应用的生命周期中用到的方法和通知很多,我们选取了几个主要的方法和通知进行详细介绍,如下表:
状态跃迁过程中应用回调的方法和本地通知方法 | 本地通知 | 说明 |
application:didFinishLaunchingWithOptions: | UIApplicationDidFinishLaunchingNotification | 应用启动并进行初始化时会调用该方法并发出通知。 这个阶段会实例化根视图控制器。 |
applicationDidBecomeActive: | UIApplicationDidBecomeActiveNotification | 应用进入前台并处于非活动状态时调用该方法并发出通知。 这个阶段可以恢复UI的状态(例如游戏状态等)。 |
applicationWillResignActive: | UIApplicationWillResignActiveNotification | 应用从活动状态进入到非活动状态时调用该方法并发出通知。 这个阶段可以保存UI的状态(例如游戏状态等)。 |
applicationDidEnterBackground: | UIApplicationDidEnterBackgroundNotification | 应用进入后台时调用该方法并发出通知。 这个阶段可以保存用户数据,释放一些资源(例如释放数据库资源等)。 |
applicationWillEnterForeground: | UIApplicationWillEnterForegroundNotification | 应用进入到前台,但是还没有处于活动状态时调用该方法并发出通知。 这个阶段可以恢复用户数据。 |
applicationWillTerminate: | UIApplicationWillTerminateNotification | 应用被终止时调用该方法并发出通知,但内存清除时除外。 这个阶段释放一些资源,也可以保存用户数据。 |
为了便于观察应用程序的运行状态,我们在AppDelegate类中的方法添加一些日志输出,代码如下:
1 import UIKit 2 3 @UIApplicationMain 4 class AppDelegate: UIResponder, UIApplicationDelegate { 5 6 var window: UIWindow? 7 8 9 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {10 NSLog("%@", "application:didFinishLaunchingWithOptions:")11 return true12 }13 14 func applicationWillResignActive(application: UIApplication) {15 NSLog("%@", "applicationWillResignActive:")16 }17 18 func applicationDidEnterBackground(application: UIApplication) {19 NSLog("%@", "applicationDidEnterBackground:")20 }21 22 func applicationWillEnterForeground(application: UIApplication) {23 NSLog("%@", "applicationWillEnterForeground:")24 }25 26 func applicationDidBecomeActive(application: UIApplication) {27 NSLog("%@", "applicationDidBecomeActive:")28 }29 30 func applicationWillTerminate(application: UIApplication) {31 NSLog("%@", "applicationWillTerminate:")32 }33 34 35 }
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:iOS系列 基础篇 03 探究应用生命周期
关键词:IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。