Partager via


API et terminologie du coordinateur d’activité

Pour comprendre l’API Activity Coordinator, il est important de se familiariser avec les termes utilisés par l’API.

L’API Coordinateur d’activité coordonne l’exécution de tâches différées, appelées activités, sur un système. Les développeurs peuvent utiliser l’API pour recevoir des notifications indiquant quand démarrer ou arrêter une activité en fonction de l’état du système souhaité. Cet état est défini par une stratégie, qui décrit les conditions optimales des ressources système lors de l’exécution d’une activité. Les développeurs s’abonnent à ces stratégies pour recevoir des notifications à un rappel fourni, qu’ils utilisent pour coordonner l’exécution de leur activité.

Notes

Ces notifications permettent de coordonner des tâches de faible priorité ou gourmandes en ressources qui peuvent être reportées à une date ultérieure. S’il existe une tâche de priorité élevée qui doit se produire quelles que soient les conditions système, elle ne doit pas s’appuyer sur cette API.

Terminologie spécifique à l’API

Ressource

Une ressource est un composant physique ou un attribut du système qui est consommé ou affecté par une activité. Les ressources système traditionnelles telles que le processeur, le disque système et le GPU sont des exemples simples. Les ressources moins traditionnelles incluent des éléments tels que l’alimentation et l’inactivité de l’utilisateur.

Condition

Une condition est une description qualitative de l’état souhaité d’une ressource en tant que bon, moyen ou non défini. À un niveau de base, une bonne condition signifie qu’il s’agit d’un bon moment pour utiliser une ressource. Une paire ressource-condition donnée peut être évaluée à l’aide de différentes dimensions.

Les développeurs doivent choisir les conditions à utiliser pour les ressources individuelles, afin qu’elles répondent aux besoins de leur charge de travail. Cela permet à l’API de mieux coordonner le travail entre ses consommateurs.

Reportable

Les tâches différées sont les tâches qui n’affectent pas immédiatement l’expérience utilisateur d’une application, bien que l’absence d’exécution sur une période prolongée puisse toujours affecter l’expérience globale. En général, ces tâches n’ont pas besoin d’être exécutées immédiatement et peuvent différer leur exécution à un moment où le système est dans un état souhaitable. Il s’agit de moments où l’exécution de la tâche n’interfère pas avec l’expérience utilisateur ou les performances du système. Ces tâches peuvent inclure :

  • Réindexation d’un catalogue multimédia
  • Formation ou mise à jour d’un modèle de recommandation
  • Installation des mises à jour du plug-in

Activité

Une activité est une unité de travail différée telle que définie par le développeur. Les activités consomment par nature des ressources système à exécuter, ce qui peut avoir un impact sur l’expérience utilisateur. Les développeurs doivent comprendre comment leur activité consomme ces ressources afin de pouvoir utiliser l’API de manière appropriée. Ensuite, ils peuvent différer l’exécution de l’activité à un moment plus idéal à l’aide de l’API, plutôt que d’exécuter immédiatement ce travail à des moments qui peuvent avoir un impact significatif sur l’expérience utilisateur.

Stratégie

Les stratégies définissent ce que signifie un temps d’exécution idéal en décrivant les conditions souhaitées des différentes ressources nécessaires à l’exécution ou affectées par l’activité du développeur. Une stratégie est formée par plusieurs paires de ressources et de conditions, définissant des conditions de ressources individuelles.

Une stratégie peut spécifier des conditions pour des ressources telles que l’alimentation, la mémoire et le processeur, mais également exclure des ressources telles que gpu en fonction de leur pertinence. Une stratégie est considérée comme ouverte lorsque toutes les conditions de ressource sont remplies et fermées dans le cas contraire. Les stratégies ne décrivent pas la quantité d’une ressource donnée qu’une activité est censée consommer. L’API utilise des configurations de stratégie pour prendre des décisions de coordination entre les consommateurs d’API.

Lors de la configuration d’une stratégie, il est recommandé que le développeur commence par la meilleure (bonne) condition pour chaque ressource afin que l’API puisse les aider à s’exécuter au meilleur moment, lorsque l’exécution est le moins susceptible d’affecter l’expérience de l’utilisateur ou les performances du système. Les conditions peuvent être réduites (par exemple, de bonne à moyenne) par la suite si l’activité n’est pas avertie de s’exécuter suffisamment fréquemment ou suffisamment longtemps pour répondre aux besoins du développeur.

Abonnement

Les abonnements sont le mécanisme de coordination des activités. Les développeurs s’abonnent à une stratégie avec un rappel, que l’API appelle avec des notifications de coordination. Ces notifications informent le développeur quand il doit démarrer/reprendre ou arrêter/suspendre son activité. Les notifications sont basées sur les conditions de ressources de la stratégie abonnée, telle qu’elle est configurée au moment de l’abonnement, et sur les décisions de coordination prises par l’API.

Modèle de stratégie

Membre de l’enum ACTIVITY_COORDINATOR_POLICY_TEMPLATE. Ils peuvent être utilisés lors de la création d’une stratégie pour la préconfigurer avec des conditions raisonnables conçues pour répondre aux besoins courants de la plupart des activités et réduire l’impact sur l’utilisateur.

Rétrogradation

Vous pouvez passer d’une stratégie ou d’une ressource à une version antérieure en passant de meilleures à des conditions inférieures pour la rendre plus permissive et augmenter la probabilité que les conditions de la stratégie soient satisfaites. Par exemple, vous pouvez passer à une bonne condition pour le processeur en la remplaçant par une condition moyenne . Une condition moyenne a des exigences moins restrictives et est donc plus susceptible d’être satisfaite. Au niveau de la stratégie, cela augmente la probabilité que la stratégie s’ouvre (toutes les conditions de ressources sont satisfaites) plus fréquemment et pendant des périodes plus longues, en gardant à l’esprit qu’il peut s’agir de moments où il y a plus de chances de provoquer un impact sur l’utilisateur ou de dégrader les performances du système.

Actions disponibles

L’API permet au développeur d’effectuer les actions suivantes :

  • Configurez une stratégie.
  • S’abonner/se désabonner aux notifications pour les stratégies.

L’API offre la possibilité de personnaliser les stratégies pour les adapter au mieux au scénario du développeur, en commençant par une configuration de stratégie vide ou l’une des configurations de modèle qui ciblent les besoins de la plupart des applications. Dans le cas le plus simple :

  • Allouez une stratégie à l’aide d’un ID de stratégie de modèle dans ACTIVITY_COORDINATOR_POLICY_TEMPLATE.

Pour un scénario de développement plus personnalisé,

  • Allouez une stratégie de modèle (potentiellement vide).
  • Définissez les conditions souhaitées pour les ressources appropriées.

Vue d’ensemble de l’API Du coordinateur d’activité

Choix de la stratégie de coordinateur d’activité appropriée

Exemple de projet du coordinateur d’activités