Ü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
-
cacheSize The 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
-
cacheSize The cache size. Must be nonzero. maxFetchCount The 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
-
delegate The 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
-
delegate The 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
-
index The 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
-
index The index of the item to fetch. fetch Whether 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
-
itemID The 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
|
readnonatomicassign |
Die Anzahl der Elemente, die sich aktuell in der Warteschlange befinden.
|
readnonatomicassign |
Die Cache-Größe.
|
readnonatomicassign |
Die Anzahl der Warteschlangenelemente, die sich derzeit im Cache befinden.