Concetti di Preload Manager

Il gestore del precaricamento ti aiuta a offrire agli utenti un'esperienza migliore fornendo contenuti più rapidamente, con meno attesa quando passano da un elemento all'altro. Ti consente anche di personalizzare la durata e il ranking del precaricamento per elemento.

Una situazione comune nei social media è che un'app mostra all'utente un elenco o un carosello di scelte multimediali. Ad esempio, un'app potrebbe mostrare un carosello di brevi video. Quando un video termina, l'app passa a quello successivo. Se all'utente non piace il video che sta guardando, potrebbe scorrere per passare al video successivo o a quello precedente.

Se non precarichi i contenuti video, l'esperienza utente può essere frustrante. L'utente termina la riproduzione di un contenuto multimediale e deve attendere il caricamento del successivo.

D'altra parte, se precarichi i contenuti in modo troppo aggressivo, sprechi energia e larghezza di banda di rete caricando contenuti che l'utente potrebbe non riprodurre mai.

DefaultPreloadManager aiuta la tua app a bilanciare questi problemi. Il gestore del precaricamento collabora con la tua app per decidere l'importanza di ogni elemento multimediale e carica in anticipo la quantità appropriata.

Divisione del lavoro

Se utilizzi DefaultPreloadManager, parte del lavoro viene svolta dal tuo codice e parte dal gestore del precaricamento.

La tua app deve:

Il gestore del precaricamento esegue le seguenti operazioni:

  • Tiene traccia di tutti gli elementi multimediali che la tua app ha aggiunto.
  • Ogni volta che le priorità vengono aggiornate, l'app viene interrogata chiamando un TargetPreloadStatusControl implementato dalla tua app. Questa chiamata serve per scoprire il quantitativo di ogni elemento multimediale da caricare.
  • Dopo aver eseguito una query sull'app, precarica la quantità appropriata di ogni elemento multimediale. Il gestore del precaricamento decide l'ordine di caricamento dell'elemento. Dà la priorità agli elementi più vicini a quello riprodotto dall'utente.
  • Quando l'app richiede contenuti, il gestore del precaricamento fornisce un codice MediaSource con i contenuti già caricati.

Flusso di lavoro di Preload Manager

Questa sezione descrive un flusso di lavoro tipico per un'app che utilizza il gestore del precaricamento. In questo esempio, supponiamo che l'app mostri un carosello di brevi video. Il video selezionato viene riprodotto automaticamente, ma l'utente può scorrere il carosello in entrambe le direzioni, il che interrompe la riproduzione del video in corso e avvia la riproduzione del video verso cui scorre.

Tutti questi passaggi sono descritti in dettaglio nelle pagine seguenti.

  1. L'app crea un controllo dello stato di precaricamento della destinazione. Il gestore del precaricamento esegue query su questo controllo per scoprire la quantità di ogni elemento multimediale da caricare.
  2. L'app crea un DefaultPreloadManager.Builder e supera il controllo dello stato di precaricamento della destinazione. L'app utilizza quindi il builder per creare il gestore del precaricamento.
  3. L'app aggiunge elementi multimediali al gestore del precaricamento. L'app fornisce un indice per ogni elemento, specificando la posizione dell'elemento nel carosello.
  4. Per ogni elemento multimediale, il gestore del precaricamento chiama il controllo di precaricamento di destinazione per chiedere la quantità di elemento da caricare. Il controllo del precaricamento del target potrebbe indicare di caricare una determinata durata dei contenuti, recuperare solo i metadati dell'elemento o non recuperare nessuno di questi elementi in questo momento. Dopo aver ricevuto queste informazioni, il gestore del precaricamento inizia a caricare i contenuti multimediali.
  5. Quando l'utente inizia a riprodurre i contenuti, l'app chiama il gestore del precaricamento per richiedere un MediaSource per l'elemento multimediale. L'app chiama anche setCurrentPlayingIndex() per comunicare al gestore del precaricamento quale elemento multimediale viene riprodotto, in modo che le priorità degli elementi multimediali vengano aggiornate.
  6. Ogni volta che le priorità del gestore del precaricamento vengono aggiornate, viene chiamato di nuovo il controllo del precaricamento di destinazione per scoprire la quantità di ciascun elemento da caricare.
  7. Quando l'app chiude il carosello, rilascia il gestore del precaricamento per liberare le sue risorse.