美文网首页
iOS 13 全新后台任务 API

iOS 13 全新后台任务 API

作者: 红色海_ | 来源:发表于2020-03-29 19:21 被阅读0次

    Framework - Background Tasks

    available: iOS 13.0+ Beta

    iOS 13 推出了全新的 Background Tasks API,并将曾经的后台刷新 API 并入其中,易名为 BGAppRefreshTaskRequest,使用方式几乎不变。

    让人新奇不是这个 Refresh Task,而是 Processing Task:

    BGProcessingTaskRequest
    A request to launch your app in the background to execute a processing task that can take minutes to complete.

    使用新的 BGProcessingTask,你可以在 App 处于前台时,将一个后台任务提交给 iOS。随后当你的 App 处于后台时,iOS 就有可能会唤起你,让你执行这个任务。

    你会有长达数分钟的时间去完成这个任务。相比之下,BGAppRefreshTask,或者说从前的后台刷新 API,则仅有可怜的上限 30 秒的时间。

    至于将任务提交给 iOS 后,iOS 会在什么时候执行,基本都取决于用户的状态。

    完全由用户掌控的,是其使用你的 App 的频率,根据 WWDC Session 的说法推测,如果用户超过 1 周没有打开过你的 App,很有可能你的任务会被无限期延迟;如果 App 超过一个月未启动,基本上没可能会轮到你。

    开发者一定程度上可以控制的有三:

    最早开始时间,比如我要我的任务至少 3 天后再执行
    是否需要网络,若指定为「需要」,则任务仅在网络连接可用时执行
    是否需要外接电源,若指定为「需要」,则任务仅在设备充电时执行
    这里最刺激的是最后一点。

    如果你将后台任务指定为「需要外接电源」,在任务执行时,iOS 会关闭 CPU 监视器,允许任务使用设备全部的性能。

    对用户来说,升级到 iOS 13 之后,有的 App 可能会在你手机半夜充电的时候跑一些繁重的任务,比如机器学习(训练人工智能)。

    总而言之,新 API 让设备的硬件资源调配在时间维度上更为合理:iOS 更倾向于在设备空闲的时候执行 BGProcessingTask,比如晚上人睡了、手机充着电的时候。

    而 BGAppRefreshTask 由于仅有不到 30 秒的执行时间,往往用来做强度更轻、与 UI(用户交互)更相关的任务,对此,iOS 会根据用户开启 App 的时间段(比如每天早上打开新闻 App),在有需要的时候执行(赶在你每天看新闻的点之前刷新数据)。

    相关文章

      网友评论

          本文标题:iOS 13 全新后台任务 API

          本文链接:https://www.haomeiwen.com/subject/elguuhtx.html