GCKMediaQueue-Klasse

GCKMediaQueue-Klassenreferenz

Überblick

Eine Datenmodelldarstellung einer Medienwarteschlange beliebiger Länge.

Diese Klasse kann als Grundlage für eine Implementierung einer UITableViewDataSource zum Angeben einer Medienwarteschlangen-UI verwendet werden.

GCKMediaQueue wartet auf GCKSessionManager-Ereignisse und hängt beim Start einer Streaming-Sitzung automatisch an GCKRemoteMediaClient an. Er wartet auf Benachrichtigungen zu Warteschlangenänderungen aus dem GCKRemoteMediaClient und aktualisiert sein internes Datenmodell entsprechend. Ebenso wird der GCKRemoteMediaClient verwendet, um bei Bedarf Warteschlangeninformationen abzurufen.

Das Modell verwaltet eine Liste der Warteschlangenelement-IDs für die gesamte Warteschlange. Es ruft diese Liste automatisch ab, wenn sie an eine Streaming-Sitzung angehängt wird. Sie unterhält auch einen LRU-Cache (in konfigurierbarer Größe) von GCKMediaQueueItems, der durch die ID der Warteschlangenelemente verschlüsselt wird.

Die Methode itemAtIndex: (GCKMediaQueue) wird verwendet, um ein Warteschlangenelement bei einem bestimmten Index abzurufen. Wenn sich GCKMediaQueueItem derzeit nicht im Cache befindet, wird eine asynchrone Anfrage zum Abrufen dieses Elements vom Empfänger gestellt. Der Delegat wird schließlich benachrichtigt, wenn die angeforderten Elemente empfangen werden.

Wenn diese Methode in sehr kurzer Zeit mehrmals aufgerufen wird, werden die angeforderten Artikel-IDs intern in Batches zusammengefasst, um die Anzahl der Netzwerkanfragen zu reduzieren. Da es eine Obergrenze dafür gibt, wie viele Elemente der Warteschlange gleichzeitig vom Empfänger abgerufen werden können, behält GCKMediaQueue ein rollierendes Fenster der letzten N abzurufenden Element-IDs bei. Wenn also innerhalb kurzer Zeit eine sehr große Anzahl von Elementen angefordert wird, werden nur die letzten N Elemente abgerufen. Dieses Verhalten ermöglicht eine effiziente Verwaltung einer sehr langen Warteschlange in der Benutzeroberfläche der App, die von einem Nutzer schnell und/oder häufig gescrollt werden kann.

GCKMediaQueue bietet keine Methoden zum direkten Ändern der Warteschlange, da eine solche Änderung eine asynchrone Netzwerkanfrage an den Empfänger (über Methoden auf GCKRemoteMediaClient) umfasst, die möglicherweise mit einem Fehler fehlschlagen kann. GCKMediaQueue muss für eine konsistente Darstellung der Warteschlange auf dem Empfänger sorgen. Daher können lokale Änderungen am Datenmodell, die noch nicht auf dem Empfänger durchgeführt wurden, zu einem falschen UI-Verhalten führen.

Weitere Informationen zum Delegatprotokoll finden Sie unter GCKMediaQueueDelegate.

Seit
4.3.4

Übernimmt NSObject.

Übersicht über Instanzmethoden

(instancetype) - init
 
(instancetype) - initWithRemoteMediaClient:
 Initialisiert einen neuen GCKMediaQueue mit der Standard-Cache-Größe und der standardmäßigen maximalen Abrufanzahl. Mehr...
 
(instancetype) - initWithRemoteMediaClient:cacheSize:
 Initialisiert einen neuen GCKMediaQueue mit der angegebenen Cache-Größe und der standardmäßigen maximalen Abrufanzahl. Mehr...
 
(instancetype) - initWithRemoteMediaClient:cacheSize:maxFetchCount:
 Initialisiert einen neuen GCKMediaQueue mit der angegebenen Cache-Größe und der angegebenen maximalen Abrufanzahl. Mehr...
 
(void) - addDelegate:
 Fügt der Liste der Bevollmächtigten dieses Objekts einen Delegaten hinzu. Mehr...
 
(void) - removeDelegate:
 Entfernt einen Delegaten aus der Liste der Bevollmächtigten dieses Objekts. Mehr...
 
(nullable GCKMediaQueueItem *) - itemAtIndex:
 Gibt das Medienwarteschlangenelement am angegebenen Index in der Warteschlange zurück oder sorgt dafür, dass das Element vom Empfänger abgerufen wird, wenn es sich derzeit nicht im Cache befindet. Mehr...
 
(nullable GCKMediaQueueItem *) - itemAtIndex:fetchIfNeeded:
 Gibt das Medienelement der Warteschlange am angegebenen Index in der Warteschlange zurück oder sorgt gegebenenfalls dafür, dass das Element vom Empfänger abgerufen wird, wenn es sich derzeit nicht im Cache befindet. Mehr...
 
(GCKMediaQueueItemID- itemIDAtIndex:
 Gibt die Element-ID des Elements am angegebenen Index in der Warteschlange zurück. Mehr...
 
(NSInteger) - indexOfItemWithID:
 Sucht den Index eines Warteschlangenelements in der Warteschlange. Mehr...
 
(void) - reload
 Lädt die Warteschlange neu. Mehr...
 
(void) - clear
 Löscht die Warteschlange, entfernt alle Elemente und leert den Cache. Mehr...
 

Property-Zusammenfassung

NSUInteger itemCount
 Die Anzahl der Elemente, die sich aktuell in der Warteschlange befinden. Mehr...
 
NSUInteger cacheSize
 Die Cache-Größe. Mehr...
 
NSUInteger cachedItemCount
 Die Anzahl der Warteschlangenelemente, die sich derzeit im Cache befinden. Mehr...
 

Methodendetail

- (instancetype) initWithRemoteMediaClient: (GCKRemoteMediaClient *)  remoteMediaClient

Initialisiert einen neuen GCKMediaQueue mit der Standard-Cache-Größe und der standardmäßigen maximalen Abrufanzahl.

- (instancetype) initWithRemoteMediaClient: (GCKRemoteMediaClient *)  remoteMediaClient
cacheSize: (NSUInteger)  cacheSize 

Initialisiert einen neuen GCKMediaQueue mit der angegebenen Cache-Größe und der standardmäßigen maximalen Abrufanzahl.

Parameters
cacheSizeThe cache size. Must be nonzero.
- (instancetype) initWithRemoteMediaClient: (GCKRemoteMediaClient *)  remoteMediaClient
cacheSize: (NSUInteger)  cacheSize
maxFetchCount: (NSUInteger)  maxFetchCount 

Initialisiert einen neuen GCKMediaQueue mit der angegebenen Cache-Größe und der angegebenen maximalen Abrufanzahl.

Parameters
cacheSizeThe cache size. Must be nonzero.
maxFetchCountThe maxiumum fetch count with minimum being 1.
- (void) addDelegate: (id< GCKMediaQueueDelegate >)  delegate

Fügt der Liste der Bevollmächtigten dieses Objekts einen Delegaten hinzu.

Parameters
delegateThe delegate to add. The delegate will be retained until removeDelegate: is called.
- (void) removeDelegate: (id< GCKMediaQueueDelegate >)  delegate

Entfernt einen Delegaten aus der Liste der Bevollmächtigten dieses Objekts.

Parameters
delegateThe delegate to remove.
- (nullable GCKMediaQueueItem *) itemAtIndex: (NSUInteger)  index

Gibt das Medienwarteschlangenelement am angegebenen Index in der Warteschlange zurück oder sorgt dafür, dass das Element vom Empfänger abgerufen wird, wenn es sich derzeit nicht im Cache befindet.

Parameters
indexThe index of the item to fetch.
Rückgaben
Das Element im angegebenen Index oder nil, wenn sich das Element derzeit nicht im Cache befindet, aber asynchron abgerufen wird.
- (nullable GCKMediaQueueItem *) itemAtIndex: (NSUInteger)  index
fetchIfNeeded: (BOOL)  fetch 

Gibt das Medienelement der Warteschlange am angegebenen Index in der Warteschlange zurück oder sorgt gegebenenfalls dafür, dass das Element vom Empfänger abgerufen wird, wenn es sich derzeit nicht im Cache befindet.

Parameters
indexThe index of the item to fetch.
fetchWhether the item should be fetched from the receiver if it is not currently in the cache.
Rückgaben
Das Element im angegebenen Index oder nil, wenn sich das Element derzeit nicht im Cache befindet.
- (GCKMediaQueueItemID) itemIDAtIndex: (NSUInteger)  index

Gibt die Element-ID des Elements am angegebenen Index in der Warteschlange zurück.

Rückgaben
Die Element-ID beim angegebenen Index oder „kGCKMediaQueueInvalidItemID“, wenn der Index ungültig ist.
- (NSInteger) indexOfItemWithID: (GCKMediaQueueItemID itemID

Sucht den Index eines Warteschlangenelements in der Warteschlange.

Parameters
itemIDThe queue item ID.
Rückgaben
Der Index (d. h. die Kardinalposition) des Elements in der Warteschlange oder NSNotFound, wenn sich kein solches Element in der Warteschlange befindet.
- (void) reload

Lädt die Warteschlange neu.

Der Cache wird geleert und die Element-ID-Liste wird noch einmal vom Empfänger abgerufen.

- (void) clear

Löscht die Warteschlange, entfernt alle Elemente und leert den Cache.

Objektdetails

- (NSUInteger) itemCount
readnonatomicassign

Die Anzahl der Elemente, die sich aktuell in der Warteschlange befinden.

- (NSUInteger) cacheSize
readnonatomicassign

Die Cache-Größe.

- (NSUInteger) cachedItemCount
readnonatomicassign

Die Anzahl der Warteschlangenelemente, die sich derzeit im Cache befinden.