Présentation
Représentation d'un modèle de données d'une file d'attente de contenus multimédias de longueur arbitraire.
Cette classe peut être utilisée comme base pour l'implémentation d'une UITableViewDataSource afin de piloter l'interface utilisateur d'une file d'attente multimédia.
GCKMediaQueue écoute les événements GCKSessionManager et s'associe automatiquement à GCKRemoteMediaClient lorsqu'une session Cast démarre. Il écoute les notifications de modification de file d'attente du GCKRemoteMediaClient et met à jour son modèle de données interne en conséquence. De même, il utilise GCKRemoteMediaClient pour récupérer à la demande des informations sur la file d'attente.
Le modèle gère une liste des ID des éléments de la file d'attente pour l'ensemble de la file d'attente. Il la récupère automatiquement chaque fois qu'elle est associée à une session Cast. Il gère également un cache LRU (de taille configurable) de GCKMediaQueueItems, associé à l'ID de l'élément de la file d'attente.
La méthode itemAtIndex: (GCKMediaQueue) permet d'extraire un élément de file d'attente à un index donné. Si GCKMediaQueueItem ne se trouve pas actuellement dans le cache, une requête asynchrone est effectuée pour récupérer cet élément auprès du récepteur, et le délégué est informé de la réception des éléments demandés.
Si plusieurs appels à cette méthode sont effectués en très peu de temps, les ID d'articles demandés sont regroupés en interne afin de réduire le nombre de requêtes réseau effectuées. Étant donné qu'il existe une limite supérieure pour le nombre d'éléments de file d'attente pouvant être récupérés à la fois depuis le récepteur, GCKMediaQueue conserve une fenêtre glissante des N derniers ID d'éléments à extraire. Par conséquent, si un très grand nombre d'articles est demandé en peu de temps, seuls les N derniers éléments seront réellement récupérés. Ce comportement permet de gérer efficacement une très longue file d'attente dans l'interface utilisateur de l'application, que l'utilisateur peut parcourir rapidement et/ou fréquemment.
GCKMediaQueue ne fournit aucune méthode pour modifier directement la file d'attente, car une telle modification implique une requête réseau asynchrone adressée au destinataire (via des méthodes sur GCKRemoteMediaClient), ce qui peut échouer et générer une erreur. GCKMediaQueue doit garantir une représentation cohérente de la file d'attente telle qu'elle existe sur le récepteur. Par conséquent, les modifications locales du modèle de données qui n'ont pas encore été validées sur le récepteur pourraient entraîner un comportement incorrect de l'interface utilisateur.
Consultez GCKMediaQueueDelegate pour connaître le protocole délégué.
- Depuis
- 4.3.4
Hérite du NSObject.
Résumé des méthodes d'instance | |
(instancetype) | - init |
(instancetype) | - initWithRemoteMediaClient: |
Initialise un nouveau GCKMediaQueue avec la taille de cache par défaut et le nombre maximal de récupérations par défaut. Plus... | |
(instancetype) | - initWithRemoteMediaClient:cacheSize: |
Initialise un nouveau GCKMediaQueue avec la taille de cache donnée et le nombre maximal de récupérations par défaut. Plus... | |
(instancetype) | - initWithRemoteMediaClient:cacheSize:maxFetchCount: |
Initialise un nouveau GCKMediaQueue avec la taille de cache donnée et le nombre maximal de récupérations. Plus... | |
(void) | - addDelegate: |
Ajoute un délégué à la liste de délégués de cet objet. Plus... | |
(void) | - removeDelegate: |
Supprime un délégué de la liste des délégués de cet objet. Plus... | |
(nullable GCKMediaQueueItem *) | - itemAtIndex: |
Renvoie l'élément de la file d'attente multimédia correspondant à l'index donné dans la file d'attente ou fait en sorte que l'élément soit récupéré auprès du récepteur s'il ne se trouve pas dans le cache. Plus... | |
(nullable GCKMediaQueueItem *) | - itemAtIndex:fetchIfNeeded: |
Renvoie l'élément de la file d'attente multimédia correspondant à l'index donné dans la file d'attente, ou organise l'extraction de cet élément auprès du récepteur s'il ne se trouve pas dans le cache. Plus... | |
(GCKMediaQueueItemID) | - itemIDAtIndex: |
Renvoie l'ID de l'élément correspondant à l'index donné dans la file d'attente. Plus... | |
(NSInteger) | - indexOfItemWithID: |
Recherche l'index d'un élément de la file d'attente. Plus... | |
(void) | - reload |
Il actualise la file d'attente. Plus... | |
(void) | - clear |
Efface la file d'attente, supprime tous les éléments et vide le cache. Plus... | |
Résumé de la propriété | |
NSUInteger | itemCount |
Nombre d'éléments dans la file d'attente. Plus... | |
NSUInteger | cacheSize |
Taille du cache. Plus... | |
NSUInteger | cachedItemCount |
Nombre d'éléments de file d'attente actuellement dans le cache. Plus... | |
Détails sur la méthode
- (instancetype) initWithRemoteMediaClient: | (GCKRemoteMediaClient *) | remoteMediaClient |
Initialise un nouveau GCKMediaQueue avec la taille de cache par défaut et le nombre maximal de récupérations par défaut.
- (instancetype) initWithRemoteMediaClient: | (GCKRemoteMediaClient *) | remoteMediaClient | |
cacheSize: | (NSUInteger) | cacheSize | |
Initialise un nouveau GCKMediaQueue avec la taille de cache donnée et le nombre maximal de récupérations par défaut.
- Parameters
-
cacheSize The cache size. Must be nonzero.
- (instancetype) initWithRemoteMediaClient: | (GCKRemoteMediaClient *) | remoteMediaClient | |
cacheSize: | (NSUInteger) | cacheSize | |
maxFetchCount: | (NSUInteger) | maxFetchCount | |
Initialise un nouveau GCKMediaQueue avec la taille de cache donnée et le nombre maximal de récupérations.
- Parameters
-
cacheSize The cache size. Must be nonzero. maxFetchCount The maxiumum fetch count with minimum being 1.
- (void) addDelegate: | (id< GCKMediaQueueDelegate >) | delegate |
Ajoute un délégué à la liste de délégués de cet objet.
- Parameters
-
delegate The delegate to add. The delegate will be retained until removeDelegate: is called.
- (void) removeDelegate: | (id< GCKMediaQueueDelegate >) | delegate |
Supprime un délégué de la liste des délégués de cet objet.
- Parameters
-
delegate The delegate to remove.
- (nullable GCKMediaQueueItem *) itemAtIndex: | (NSUInteger) | index |
Renvoie l'élément de la file d'attente multimédia correspondant à l'index donné dans la file d'attente ou fait en sorte que l'élément soit récupéré auprès du récepteur s'il ne se trouve pas dans le cache.
- Parameters
-
index The index of the item to fetch.
- Renvoie
- Élément de l'index donné, ou
nil
si l'élément ne se trouve pas dans le cache, mais sera récupéré de manière asynchrone.
- (nullable GCKMediaQueueItem *) itemAtIndex: | (NSUInteger) | index | |
fetchIfNeeded: | (BOOL) | fetch | |
Renvoie l'élément de la file d'attente multimédia correspondant à l'index donné dans la file d'attente, ou organise l'extraction de cet élément auprès du récepteur s'il ne se trouve pas dans le cache.
- 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.
- Renvoie
- Élément de l'index donné, ou
nil
si l'élément ne se trouve pas dans le cache.
- (GCKMediaQueueItemID) itemIDAtIndex: | (NSUInteger) | index |
Renvoie l'ID de l'élément correspondant à l'index donné dans la file d'attente.
- Renvoie
- ID de l'élément dans l'index donné, ou kGCKMediaQueueInvalidItemID si l'index n'est pas valide.
- (NSInteger) indexOfItemWithID: | (GCKMediaQueueItemID) | itemID |
Recherche l'index d'un élément de la file d'attente.
- Parameters
-
itemID The queue item ID.
- Renvoie
- Index (c'est-à-dire la position cardinale) de l'élément dans la file d'attente, ou NSNotFound si aucun élément de ce type ne se trouve dans la file d'attente.
- (void) reload |
Il actualise la file d'attente.
Le cache sera vidé, et la liste des ID d'éléments sera de nouveau récupérée à partir du destinataire.
- (void) clear |
Efface la file d'attente, supprime tous les éléments et vide le cache.
Détails de la propriété
|
readnonatomicassign |
Nombre d'éléments dans la file d'attente.
|
readnonatomicassign |
Taille du cache.
|
readnonatomicassign |
Nombre d'éléments de file d'attente actuellement dans le cache.