iOS开发计算机技术一锅炖#iOS#HeminWon

iOS App生命周期初识

2015-12-27  本文已影响1880人  One9398

面对每次打开iOS应用时.都是否想到过其App运行过程:从启动到按Home键回到主屏幕,从运行中到按两下Home键进入任务管理界面,甚至iOS9后支持多任务的iPad当两个App出现在同一屏幕上,这几个情况App所处于什么状态.其过渡中又在进行怎样的状态切换呢,Let's get it !!! 😎

App状态变化的历史

iOS4之前的App时代,整个界面只允许一个App处于运行状态,而当某个App处于运行状态时意味着其他所有的App的活动都被终止并退出,无法接受任何事件.一个应用的状态转换只有运行、退出之间的变换.在iOS4之后的iPhone进入了多任务处理时代.也意味了当从一个应用切换到另一个应用时,系统不会马上将原来的应用终止退出,将其状态变成了suspend,而另一个应用的状态变成了running.

AppDelegate

运行一个App,应用程序会自动创建UIApplication单例对象,并用于引用着,其UIApplicaiton实例的delegate被赋值为AppDelegate实例对象,其也是一个单例,也永远不会被释放直到该App退出.而AppDelegate对象有着一系列在程序启动时的跟踪状态变化,处理从其他应用跳转、启动到此应用,或者后台运行代码的方法.以下是AppDelegate做为App的根对象的主要功能:

  1. 运行在启动时自己用来初始化应用的特点代码.
  2. 响应App从启动,到后台,到前台,到退出时各个状态时的指定方法.
  3. 负责处理接收推送通知或本地通知启动App的情况,处理手机低内存警告时的情况.
  4. 负责处理应用程序的状态保存和恢复.
  5. 响应由App处理的事件,而是指定控制器或视图.
  6. 处理数据的存储.

App状态的代理事件

新建一个Signle View Application后,系统会自动创建AppDelegate文件,系统默认提供的方法表示了App不同的运行状态.

注意点

iOS8中,App会在根控制器初始化后调用viewDidAppear方法之后才会调用applicationDidBecomeActive,对于App启动的事件顺序为

application:didFinishLaunchingWithOptions:
⬇️
viewDidLoad
⬇️
viewWillAppear
⬇️
viewDidAppear
⬇️
applicationDidBecomeActive

而在iOS7和9中,App在调用applicationDidBecomeActive方法后才会调用根控制器的viewDidAppear,其调用顺序为

application:didFinishLaunchingWithOptions:
⬇️
viewDidLoad
⬇️
viewWillAppear
⬇️
applicationDidBecomeActive
⬇️
viewDidAppear

在这两情况下如果要对UIApplicationDidBecomeActiveNotification进行通知注册时就需要考虑其iOS的兼容性,否则就会出现问题了.

上一篇 下一篇

猜你喜欢

热点阅读