API e terminologia di Activity Coordinator

Per comprendere l'API di Activity Coordinator, è importante acquisire familiarità con i termini usati dall'API.

L'API Activity Coordinator coordina l'esecuzione di attività rinviabili, denominate attività, in un sistema. Gli sviluppatori possono usare l'API per ricevere notifiche di quando avviare o arrestare un'attività in base a uno stato del sistema desiderato. Questo stato è definito da un criterio, che descrive le condizioni ottimali delle risorse di sistema durante l'esecuzione di un'attività. Gli sviluppatori sottoscrivono questi criteri per ricevere notifiche inviate a un callback fornito, che usano per coordinare l'esecuzione dell'attività.

Nota

Queste notifiche consentono di coordinare attività con priorità bassa o a elevato utilizzo di risorse che possono essere posticipate in un secondo momento. Se è presente un'attività con priorità elevata che deve verificarsi indipendentemente dalle condizioni di sistema, non deve basarsi su questa API.

Terminologia specifica dell'API

Resource

Una risorsa è un componente fisico o un attributo del sistema utilizzato o interessato da un'attività. Esempi semplici sono risorse di sistema tradizionali come CPU, disco di sistema e GPU. Le risorse meno tradizionali includono elementi come potenza e inattività dell'utente.

Condizione

Una condizione è una descrizione qualitativa dello stato desiderato di una risorsa come buono, medio o non impostato. A livello di base, una condizione valida significa che è un buon momento per usare una risorsa. Una determinata coppia di condizioni di risorsa può essere valutata usando un'ampia gamma di dimensioni.

Gli sviluppatori devono scegliere le condizioni da usare per le singole risorse, in modo da soddisfare le esigenze del carico di lavoro. In questo modo l'API può coordinare al meglio il lavoro tra i consumer.

Rinviabile

Le attività rinviabili sono quelle attività che non influiscono immediatamente sull'esperienza utente di un'applicazione, anche se la mancanza di esecuzione in un periodo prolungato può comunque influire sull'esperienza complessiva. In generale, queste attività non devono essere eseguite immediatamente e possono rinviare l'esecuzione a un momento in cui il sistema è in uno stato auspicabile. Questi sono i momenti in cui l'esecuzione dell'attività non interferisce con l'esperienza dell'utente o le prestazioni del sistema. Tali attività possono includere:

  • Reindicizzazione di un catalogo multimediale
  • Training o aggiornamento di un modello di raccomandazione
  • Installazione degli aggiornamenti del plug-in

Impegno

Un'attività è un'unità di lavoro rinviabile come definito dallo sviluppatore. Le attività usano intrinsecamente le risorse di sistema da eseguire, che possono influire sull'esperienza utente. Gli sviluppatori devono comprendere come l'attività utilizza queste risorse in modo che possano usare in modo appropriato l'API. Possono quindi rinviare l'esecuzione dell'attività a un momento più ideale usando l'API, invece di eseguire immediatamente tali operazioni in momenti che possono influire significativamente sull'esperienza utente.

Criteri

I criteri definiscono il tempo ideale per l'esecuzione descrivendo le condizioni desiderate di varie risorse necessarie per l'esecuzione o l'impatto dell'attività dello sviluppatore. I criteri sono costituiti da diverse coppie di risorse e condizioni, definendo singole condizioni delle risorse.

I criteri possono specificare condizioni per le risorse come Power, Memory e CPU, ma anche escludere risorse come GPU in base alla pertinenza. Un criterio viene considerato aperto quando tutte le condizioni delle risorse vengono soddisfatte e chiuse in caso contrario. I criteri non descrivono la quantità di una determinata risorsa utilizzata da un'attività. L'API usa le configurazioni dei criteri per prendere decisioni di coordinamento tra i consumer di API.

Quando si configura un criterio, è consigliabile che lo sviluppatore inizi con la condizione migliore (valida) per ogni risorsa in modo che l'API possa aiutarli a essere eseguiti nei momenti migliori, quando l'esecuzione è meno probabile che influisca sull'esperienza dell'utente o sulle prestazioni del sistema. Le condizioni possono essere ridotte (ad esempio, da buono a medio) in seguito se l'attività non riceve una notifica per l'esecuzione abbastanza frequente o abbastanza lunga per soddisfare le esigenze dello sviluppatore.

Abbonamento

Le sottoscrizioni sono il meccanismo di coordinamento per le attività. Gli sviluppatori sottoscrivono un criterio con un callback, che l'API chiama con notifiche di coordinamento. Queste notifiche informano lo sviluppatore quando devono avviare/riprendere o arrestare/sospendere l'attività. Le notifiche sono basate sulle condizioni delle risorse dei criteri sottoscritti, come configurato al momento della sottoscrizione e sulle decisioni di coordinamento prese dall'API.

Modello di criteri

Membro dell'enumerazione ACTIVITY_COORDINATOR_POLICY_TEMPLATE. Questi possono essere usati durante la creazione di un criterio per preconfigurarlo con condizioni ragionevoli progettate per soddisfare le esigenze comuni della maggior parte delle attività e ridurre al minimo l'impatto per l'utente.

Downgrade

È possibile effettuare il downgrade di un criterio o di una risorsa passando da condizioni migliori a minori per renderlo più permissivo e aumentare la probabilità che le condizioni dei criteri vengano soddisfatte. Ad esempio, è possibile effettuare il downgrade di una condizione valida per la CPU modificandola in una condizione media . Una condizione media ha requisiti meno restrittivi ed è quindi più probabile che venga soddisfatta. A livello di criteri, ciò aumenta la probabilità che i criteri vengano aperti (tutte le condizioni delle risorse vengono soddisfatte) più frequentemente e per periodi di tempo più lunghi, tenendo presente che questi possono verificarsi momenti in cui si verifica una maggiore probabilità di causare un impatto sull'utente o ridurre le prestazioni del sistema.

Azioni disponibili

L'API consente allo sviluppatore di eseguire le azioni seguenti:

  • Configurare un criterio.
  • Sottoscrivere/annullare la sottoscrizione alle notifiche per i criteri.

L'API offre la flessibilità di personalizzazione dei criteri per adattarsi allo scenario di sviluppo, a partire da una configurazione di criteri vuota o da una delle configurazioni del modello destinate alle esigenze della maggior parte delle app. Nel caso più semplice:

  • Allocare un criterio usando un ID criterio modello all'interno di ACTIVITY_COORDINATOR_POLICY_TEMPLATE.

Per uno scenario di sviluppo più personalizzato,

  • Allocare un criterio modello (potenzialmente vuoto).
  • Impostare le condizioni desiderate per le risorse pertinenti.

Panoramica dell'API Activity Coordinator

Scelta dei criteri di Activity Coordinator corretti

Progetto di esempio Activity Coordinator