你的位置:首页 > 软件开发 > 操作系统 > iOS系列 基础篇 03 探究应用生命周期

iOS系列 基础篇 03 探究应用生命周期

发布时间:2016-08-29 01:00:16
iOS系列 基础篇 03 探究应用生命周期 目录:1. 非运行状态 - 应用启动场景2. 点击Home键 - 应用退出场景3. 挂起重新运行场景4. 内存清除 - 应用终止场景5. 结尾   本篇主要探讨的是iOS应用中各种状态的跃迁过程,建议大家通过修改AppDeleg ...

iOS系列 基础篇 03 探究应用生命周期

iOS系列 基础篇 03 探究应用生命周期

 

目录:

1. 非运行状态 - 应用启动场景

2. 点击Home键 - 应用退出场景

3. 挂起重新运行场景

4. 内存清除 - 应用终止场景

5. 结尾

 

  本篇主要探讨的是iOS应用中各种状态的跃迁过程,建议大家通过修改AppDelegate.swift,在每个过程中添加日志输出代码,从而观察其变化。

 

 

  作为应用程序的委托对象,AppDelegate类在应用程序生命周期的不同阶段会回调不同的方法。

 

  首先,咱们先来了解一下iOS应用的不同状态和他们之间的关系,如图:

iOS系列 基础篇 03 探究应用生命周期

 

  下面简要介绍一下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类中的方法添加一些日志输出,代码如下:

iOS系列 基础篇 03 探究应用生命周期iOS系列 基础篇 03 探究应用生命周期
 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

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。