Descripción general
Representación de un modelo de datos de una cola de contenido multimedia de longitud arbitraria.
Esta clase se puede usar como base para la implementación de una UITableViewDataSource para controlar una IU de cola de contenido multimedia.
GCKMediaQueue escucha eventos GCKSessionManager y se adjunta automáticamente a GCKRemoteMediaClient cuando se inicia una sesión de transmisión. Detecta notificaciones de cambios en la cola de GCKRemoteMediaClient y actualiza su modelo de datos interno según corresponda. Del mismo modo, usa GCKRemoteMediaClient para recuperar información de la cola a pedido.
El modelo mantiene una lista de ID de elementos de cola para toda la cola y la recupera automáticamente cada vez que se conecta a una sesión de transmisión. También mantiene una caché LRU (de tamaño configurable) de GCKMediaQueueItems, vinculada al ID del elemento de la cola.
El método itemAtIndex: (GCKMediaQueue) se usa para recuperar un elemento de la cola en un índice determinado. Si el GCKMediaQueueItem no está actualmente en la caché, se realiza una solicitud asíncrona para recuperar ese elemento del receptor y, finalmente, el delegado recibe una notificación cuando se reciben los elementos solicitados.
Si se realizan varias llamadas a este método en un período muy corto, los ID de artículo solicitados se agrupan en lotes de manera interna para reducir la cantidad de solicitudes de red realizadas. Debido a que existe un límite superior para la cantidad de elementos de la cola que se pueden recuperar desde el receptor a la vez, GCKMediaQueue mantiene una ventana progresiva de los últimos N ID de elementos que se deben recuperar. Por lo tanto, si se solicita un gran número de elementos en poco tiempo, solo se recuperarán los últimos N elementos. Este comportamiento permite administrar de manera eficiente una cola muy larga en la IU de la app que el usuario puede desplazar con rapidez y/o frecuencia.
GCKMediaQueue no proporciona ningún método para modificar directamente la cola, ya que cualquiera de esos cambios implica una solicitud de red asíncrona al receptor (a través de métodos en GCKRemoteMediaClient), que puede fallar y mostrar un error. GCKMediaQueue debe garantizar una representación coherente de la cola tal como se encuentra en el receptor, por lo que realizar cambios locales en el modelo de datos que aún no se confirmaron en el receptor podría generar un comportamiento incorrecto de la IU.
Consulta GCKMediaQueueDelegate para ver el protocolo de delegado.
- Desde
- 4.3.4
Hereda NSObject.
Resumen del método de instancia | |
(instancetype) | - init |
(instancetype) | - initWithRemoteMediaClient: |
Inicializa una nueva GCKMediaQueue con el tamaño de caché y el recuento de recuperación máximo predeterminados. Más... | |
(instancetype) | - initWithRemoteMediaClient:cacheSize: |
Inicializa una nueva GCKMediaQueue con el tamaño de caché determinado y el recuento máximo de recuperación predeterminado. Más... | |
(instancetype) | - initWithRemoteMediaClient:cacheSize:maxFetchCount: |
Inicializa una nueva GCKMediaQueue con el tamaño de caché y la cantidad máxima de recuperaciones especificadas. Más... | |
(void) | - addDelegate: |
Agrega un delegado a la lista de delegados de este objeto. Más... | |
(void) | - removeDelegate: |
Quita un delegado de la lista de delegados de este objeto. Más... | |
(nullable GCKMediaQueueItem *) | - itemAtIndex: |
Muestra el elemento de la cola de contenido multimedia en el índice dado de la cola o se encarga de que se recupere el elemento del receptor si no está actualmente en la caché. Más... | |
(nullable GCKMediaQueueItem *) | - itemAtIndex:fetchIfNeeded: |
Muestra el elemento de la cola de contenido multimedia en el índice determinado de la cola o, de manera opcional, dispone que se recupere el elemento del receptor si no está actualmente en la caché. Más... | |
(GCKMediaQueueItemID) | - itemIDAtIndex: |
Muestra el ID de elemento del elemento en el índice determinado en la cola. Más... | |
(NSInteger) | - indexOfItemWithID: |
Busca el índice de un elemento de la cola en la cola. Más... | |
(void) | - reload |
Vuelve a cargar la cola. Más... | |
(void) | - clear |
Borra la cola, quita todos los elementos y limpia la caché. Más... | |
Resumen de la propiedad | |
NSUInteger | itemCount |
La cantidad de elementos que se encuentran en la cola en ese momento. Más... | |
NSUInteger | cacheSize |
El tamaño de la caché. Más... | |
NSUInteger | cachedItemCount |
La cantidad de elementos en cola que están actualmente en caché. Más... | |
Detalle del método
- (instancetype) initWithRemoteMediaClient: | (GCKRemoteMediaClient *) | remoteMediaClient |
Inicializa una nueva GCKMediaQueue con el tamaño de caché y el recuento de recuperación máximo predeterminados.
- (instancetype) initWithRemoteMediaClient: | (GCKRemoteMediaClient *) | remoteMediaClient | |
cacheSize: | (NSUInteger) | cacheSize | |
Inicializa una nueva GCKMediaQueue con el tamaño de caché determinado y el recuento máximo de recuperación predeterminado.
- Parameters
-
cacheSize The cache size. Must be nonzero.
- (instancetype) initWithRemoteMediaClient: | (GCKRemoteMediaClient *) | remoteMediaClient | |
cacheSize: | (NSUInteger) | cacheSize | |
maxFetchCount: | (NSUInteger) | maxFetchCount | |
Inicializa una nueva GCKMediaQueue con el tamaño de caché y la cantidad máxima de recuperaciones especificadas.
- Parameters
-
cacheSize The cache size. Must be nonzero. maxFetchCount The maxiumum fetch count with minimum being 1.
- (void) addDelegate: | (id< GCKMediaQueueDelegate >) | delegate |
Agrega un delegado a la lista de delegados de este objeto.
- Parameters
-
delegate The delegate to add. The delegate will be retained until removeDelegate: is called.
- (void) removeDelegate: | (id< GCKMediaQueueDelegate >) | delegate |
Quita un delegado de la lista de delegados de este objeto.
- Parameters
-
delegate The delegate to remove.
- (nullable GCKMediaQueueItem *) itemAtIndex: | (NSUInteger) | index |
Muestra el elemento de la cola de contenido multimedia en el índice dado de la cola o se encarga de que se recupere el elemento del receptor si no está actualmente en la caché.
- Parameters
-
index The index of the item to fetch.
- Devuelve
- Es el elemento en el índice dado o
nil
si el elemento no está actualmente en la caché, pero se recuperará de forma asíncrona.
- (nullable GCKMediaQueueItem *) itemAtIndex: | (NSUInteger) | index | |
fetchIfNeeded: | (BOOL) | fetch | |
Muestra el elemento de la cola de contenido multimedia en el índice determinado de la cola o, de manera opcional, dispone que se recupere el elemento del receptor si no está actualmente en la caché.
- 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.
- Devuelve
- Es el elemento en el índice dado o
nil
si el elemento no está actualmente en la caché.
- (GCKMediaQueueItemID) itemIDAtIndex: | (NSUInteger) | index |
Muestra el ID de elemento del elemento en el índice determinado en la cola.
- Devuelve
- El ID de elemento en el índice determinado o kGCKMediaQueueInvalidItemID si el índice no es válido.
- (NSInteger) indexOfItemWithID: | (GCKMediaQueueItemID) | itemID |
Busca el índice de un elemento de la cola en la cola.
- Parameters
-
itemID The queue item ID.
- Devuelve
- Es el índice (es decir, la posición cardinal) del elemento dentro de la cola o NSNotFound si no existe ese elemento en la cola.
- (void) reload |
Vuelve a cargar la cola.
Se vaciará la caché y se volverá a recuperar la lista de ID de artículo del receptor.
- (void) clear |
Borra la cola, quita todos los elementos y limpia la caché.
Detalles de la propiedad
|
readnonatomicassign |
La cantidad de elementos que se encuentran en la cola en ese momento.
|
readnonatomicassign |
El tamaño de la caché.
|
readnonatomicassign |
La cantidad de elementos en cola que están actualmente en caché.