• 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

  • 相关阅读:
    idea vue 格式化 并保存文件 宏 快捷键 ctrl+s
    IIS web.config 跨域设置 不包含 options的设置 thinkphp tp3 跨域
    vue peek 解决了 vue-template 加载 相对目录 ./components 组件内容 vscode
    base-table 加入动态slot 流程 vue2
    原码、反码、补码知识详细讲解
    巴什博奕
    Integer.bitCount() 函数理解
    el-table中的el-image预览小记
    shell 从变量中切割字符串
    QGIS,使用polygon裁剪栅格出现问题
  • 原文地址:https://www.cnblogs.com/missyxu/p/app-states.html
Copyright © 2020-2023  润新知