iOS状态变更

iOS应用状态变更

应用启动周期

当应用启动时,它从未运行状态到活跃或后台状态,简单地过渡未激活状态。作为启动周期的一部分,系统为应用创建一个过程和主进程并在主进程上调用应用的主函数。来自你的Xcode项目的默认主函数及时将控制交移到UIkit框架——该框架在初始化应用和准备运行中做了大部分工作。

启动应用到前台

Application life cycle

如果应用在后台启动——通常是处理一些后台事件,与前台的主要差异就是不管应用是否激活,都会进入后台处理事件不久后暂停。当进入后台后,系统仍会加载应用程序的用户界面文件但不会应用窗口。

下面是应用在后台启动的流程图

默认主函数

#import <UIKit/UIKit.h>
 
int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([MyAppDelegate class]));
    }
}

在程序启动时该干什么呢?

  • 检查发布选项字典,查看为什么应用发布以及是否合理响应的信息
  • 初始化应用程序的关键数据结构
  • 准备应用窗口与视图显示

响应中断

处理基于警告的中断

中断发生时该怎么做呢?

  • 停止定时器和其它周期性任务
  • 停止任何元数据查询
  • 不要初始化任何新任务
  • 暂停电影回放(飞行模式下除外)
  • 若当前应用为游戏,则进入暂停状态
  • 减低OpenGL ES的帧速率
  • 暂停任何执行非重要代码的调度或操作队列(在非活动态时可以继续处理网络请求和其它时间敏感的后台任务)

从前台移到后台

 

后台应用的内存使用

移除强引用的对象:

  • 图形对象
  • 可从磁盘加载的大媒体或数据文件
  • 应用不再需要且可以之后轻松创建的任何其它对象

为帮助减轻应用的内存足迹,在应用程序移到后台时,系统会自动清理一些分配的数据。

主要运行循环

主运行循环负责处理所有用户相关的事件

Processing events in the main run loop

 

 

 

 

posted on 2013-06-18 18:27  missyxu  阅读(325)  评论(0编辑  收藏  举报

导航