活动协调器 API 和术语

若要了解活动协调器 API,请务必熟悉此 API 使用的术语。

活动协调器 API 可协调系统上可延迟任务(被称为活动)的执行。 开发人员可使用此 API 来获取基于所需系统状态而启动或停止活动的时间的通知。 此状态由策略进行定义,而该策略描述了运行活动时系统资源的最佳条件。 开发人员会订阅这些策略,以便向提供的回调发送通知,而这些通知可用于协调其活动的执行。

注意

这些通知可用于协调低优先级或资源密集型任务,而这些任务可延迟到后续执行。 如需执行某一高优先级任务而无论系统条件如何,它则不应依赖此 API。

特定于 API 的术语

资源

资源是指由活动使用或受其影响的系统的物理组件或属性。 其简易示例包括各种常见的系统资源,如 CPU、系统磁盘和 GPU。 不太常见的资源则包括功耗和用户空闲等。

条件

条件是指资源所需状态的定性描述,它可为良好中等未设置。 在基本级别,良好条件表示它是使用资源的好时机。 可使用各种维度评估给定的资源条件对。

开发人员必须选择要用于单个资源的条件,以便符合其工作负荷的需求。 此举可让 API 在其使用者之间最好地协调工作。

可延迟

可延迟任务是指不会立即影响应用程序的用户体验的任务,尽管长时间不执行仍可能会影响整体体验。 通常,这些任务无需立即运行,且可将其执行延迟到系统处于某一理想状态的时间。 在这些时间运行该任务不会干扰用户体验或系统性能。 此类任务可能包括:

  • 为媒体目录重新编制索引
  • 训练或更新建议模型
  • 安装插件更新

活动

活动是指开发人员定义的可延迟工作单元。 活动的执行本身会消耗系统资源,而这可能会导致用户体验受到影响。 开发人员必须了解其活动如何使用这些资源,以便能适当地使用该 API。 然后,他们可使用该 API 将活动执行延迟到某一更理想的时间,而不是在可能会严重影响用户体验的时间立即执行此类工作。

策略

策略可通过描述运行或受开发人员活动影响所需的各种资源所需的条件来定义运行时间的理想时间。 一个策略由多个资源与条件对构成,而每个资源与条件对可定义单个资源条件

策略可指定功耗、内存和 CPU 等资源的条件,但也会根据资源相关性而排除 GPU 等资源。 满足所有资源条件时,策略被视为打开,否则便视为关闭。 策略不描述活动预期消耗的给定资源量。 此 API 使用策略配置在不同 API 使用者之间做出协调决策。

配置策略时,建议开发人员先设置每个资源的最佳(良好)条件,以便 API 在执行最有可能影响用户体验或系统性能时帮助他们在最佳时间运行该执行。 如果没有通知活动足够频繁地运行或运行足够长时间以满足开发人员的需求,条件则可能会降低(例如,从良好变为中等)。

订阅

订阅是针对活动的协调机制。 开发人员使用回调来订阅策略,而 API 会通过协调通知调用该回调。 这些通知会告知开发人员何时应启动/恢复或停止/暂停其活动。 通知均基于已订阅策略的资源条件(在订阅时进行配置)以及 API 做出的协调决策。

策略模板

枚举 ACTIVITY_COORDINATOR_POLICY_TEMPLATE 的成员。 创建策略以通过合理条件对其进行预先配置时,可使用这些模板;而这些条件旨在满足大多数活动的常见需求,并最大程度减少对用户的影响。

降级

可通过从更好的条件更改为较差的条件来对策略或资源进行降级,以使其更为宽松并提高满足策略条件的可能性。 例如,可通过将 CPU良好条件更改为中等条件来进行降级。 中等条件的限制要求较少,因此更有可能被满足。 在策略级别,此举可提高策略打开(即,所有资源条件均得到满足)更频繁且持续更长时间的可能性;但请记住,这些时间可能是更有可能造成用户影响或降低系统性能的时候。

可用操作

此 API 允许开发人员执行以下操作:

  • 配置策略。
  • 订阅/取消订阅策略的通知。

首先使用空的策略配置或面向大多数应用需求的某一模板配置,该 API 允许灵活自定义策略以便最好地适应开发人员场景。 在最简单的情况下:

  • ACTIVITY_COORDINATOR_POLICY_TEMPLATE 中使用模板策略 ID 来分配策略。

对于自定义程度更高的开发人员场景,

  • 分配模板策略(可能为空策略)。
  • 为相关资源设置所需条件。

活动协调器 API 概述

选择正确的活动协调器策略

活动协调器示例项目