zoukankan      html  css  js  c++  java
  • iOS后台解析

    iOS后台

    上个月给小妹买了一台6s 她问我双击 Home 键之后 弹出的那些应用会不会耗电 我找到一篇文章 正好说的就是这个问题 摘要翻译一下

    原文地址

    http://www.speirs.org/blog/2012/1/2/misconceptions-about-ios-multitasking.html

    非常多人以为「在 iOS 上双击 Home 键之后底部弹出的一栏应用是当前 iOS 全部正在执行(包含后台执行)的程序 它们仍然会占用内存并耗费电量 要最大化设备的性能 最好手动关闭它们 」

    但这是错误的 其实这栏应用仅仅是「用户近期使用的应用列表」而非「全部正在执行的应用列表」 除非在特殊情况下 用户不须要去手动管理这个列表

    iOS执行状态

    iOS 应用有 5 种执行状态 各自是:
    没有执行 - 应用处于终止状态 没有执行。
    不活跃 - 应用处于前台 但不接受事件操作(比如 当前应用处于活跃时 用户进行了锁屏操作);
    活跃 - 应用处于 “使用中” 的正常状态;
    后台 - 应用没有显示在屏幕上 但仍在执行代码。
    挂起 -应用仍然驻留在内存中 但不执行代码;
    「不活跃」和「活跃」这两种状态比較清楚 这里须要讨论的是 当一个应用从「活跃」切换到「后台」 再到「挂起」 最后到「停止执行」这个过程中发生了什么

    当你点击 Home 键时 应用会从「活跃」切换到「后台」 而且大多数应用会在几秒钟后从「后台」切换到「挂起」状态

    「挂起」状态的应用仍留在内存中 这样当你返回这个应用时能够高速使用 但它们并不使用处理器计算 也并不耗电

    你可能会觉得 假设应用停留在内存中 你须要以某种方式时结束它以节省内存 实际上不须要 由于 iOS 会自己主动帮你做到 假设有非常多应用停留在内存中 而你打开了一个非常占内存的应用 比方大游戏 iOS 会自己主动清理这些「挂起」的应用并将他们切换到「没有执行」状态 也就是把它们全然从内存中清除 下次当你打开它们时 相当于又一次打开这个应用

    可能会让人们比較困惑的是:上述的全部情况都不会影响到你在多任务栏中看到什么 多任务栏中显示的仅仅是你近期使用的应用程序的列表 而不论这些应用是处于「后台」「挂起」或「没有执行」状态 你可能还会注意到了 当前正执行的应用并不出如今「多任务栏」中

    多任务执行

    当应用会从「活跃」切换到「后台」状态 大多数应用会在几秒钟内从「后台」切换到「挂起」状态 但应用也能够通过申明自己是「后台任务」来要求延长「后台」状态 举个样例 我用自己最喜欢的播客应用 Instacast 下载比較大的播客节目 当 Instacast 处于「活跃」状态时開始下载 假设点击 Home 键 Instacast 会在后台执行 5 秒钟左右 然后就进入了「挂起」状态 就会中断下载播客节目 这个节目可能须要 5 分钟甚至更长一点时间才干下载完

    但 iOS 同意 Instacast 申明下载任务是「后台任务」 这样就能够获得额外的时间在后台执行 完毕下载任务 但应用申请额外的「后台执行」时间并非无限长的 一个应用能够获得 10 分钟的额外后台执行时间 然后这个应用会被 iOS 强制切换到「挂起」状态 所以 你自己仍然不用去操心

    无限制后台执行

    全部的 iOS 应用都有 5 秒钟的后台执行时间 有一些应用能够申请 10 分钟的额外后台执行时间 仅仅有非常少的一些应用能够真正不限时长的在后台执行

    在 iOS 5 中仅仅同意 5 中应用能够不限制时长的在后台执行:
    在后台播放音频的应用 比如 Instacast 在后台播放音频播客时;
    在后台追踪地理位置的应用 比如 当你在使用其它应用时 仍然能够从 TomTom 导航软件收到语音提示。
    在后台等候接收 VOIP 语音通话的应用 比如 假设你在 iOS 上使用 Skype 即便当前不在用 Skype 也能接收到语音通话请求;
    「新闻报刊」中的应用下载的新的内容;
    能够在后台持续从外接设备上接收更新的应用

    近期才開始往github上放东西 在公司写的又不能放= = 大家姑且看看吧

    github地址: https://github.com/FuThD

  • 相关阅读:
    Labeling Balls
    Following Orders
    Frame Stacking
    Window Pains
    Sort it all out
    Ferry Loading||
    今年暑假不AC
    xcode10 出现 框架 或者 pod 出错
    网络请求 步骤
    swift UIAlertController使用 UIAlertController的宽度 为270
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7237673.html
Copyright © 2011-2022 走看看