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 una implementación de una UITableViewDataSource para impulsar una IU de cola de medios.
GCKMediaQueue detecta eventos GCKSessionManager y se adjunta automáticamente a GCKRemoteMediaClient cuando se inicia una sesión de transmisión. Detecta las notificaciones de cambio de cola de GCKRemoteMediaClient y actualiza su modelo de datos interno según corresponda. Del mismo modo, usa GCKRemoteMediaClient para recuperar información de colas a pedido.
El modelo mantiene una lista de los ID de los elementos de la cola para toda la cola; automáticamente, cuando se adjunta a una sesión de transmisión. También mantiene una caché LRU (de tamaño configurable) de GCKMediaQueueItems, clave por el ID del elemento de la cola.
El método itemAtIndex: (GCKMediaQueue) se usa para recuperar un elemento de cola en un índice determinado. Si GCKMediaQueueItem no está en la caché, se realiza una solicitud asíncrona para recuperar ese elemento del receptor y se notifica al delegado cuando se reciben los elementos solicitados.
Si se realizan varias llamadas a este método en un período muy corto de tiempo, los ID de artículo solicitados se agrupan en lotes para reducir la cantidad de solicitudes de red realizadas. Como hay un límite superior para la cantidad de elementos en cola que se pueden recuperar del receptor a la vez, GCKMediaQueue mantiene una ventana progresiva de los últimos N IDs que se deben recuperar. Por lo tanto, si se solicita una gran cantidad de elementos en un período breve, solo se recuperarán los últimos N elementos. Este comportamiento permite administrar de manera eficiente una cola larga en la IU de la app que un usuario puede desplazarse de manera rápida o frecuente.
GCKMediaQueue no proporciona ningún método para modificar la cola directamente, ya que cualquier cambio de este tipo implica una solicitud de red asíncrona al receptor (a través de métodos en GCKRemoteMediaClient), que puede fallar con un error. GCKMediaQueue debe garantizar una representación coherente de la cola como existe en el receptor, por lo que realizar cambios locales en el modelo de datos que aún no se confirmó en el receptor podría dar como resultado un comportamiento incorrecto de la IU.
Consulta GCKMediaQueueDelegate para ver el protocolo de delegado.
- Since
- 4.3.4
Hereda NSObject.
Resumen del método de instancia | |
(instancetype) | - init |
(instancetype) | - initWithRemoteMediaClient: |
Inicializa un GCKMediaQueue nuevo con el tamaño predeterminado de la caché y el recuento máximo de recuperación predeterminado. Más... | |
(instancetype) | - initWithRemoteMediaClient:cacheSize: |
Inicializa un GCKMediaQueue nuevo con el tamaño de caché determinado y el recuento de recuperación máximo predeterminado. Más... | |
(instancetype) | - initWithRemoteMediaClient:cacheSize:maxFetchCount: |
Inicializa un GCKMediaQueue nuevo con el tamaño de caché determinado y el recuento de recuperación máximo. Más... | |
(void) | - addDelegate: |
Agrega un delegado a la lista de delegados de este objeto. Más... | |
(void) | - removeDelegate: |
Quita a un delegado de la lista de delegados de este objeto. Más... | |
(nullable GCKMediaQueueItem *) | - itemAtIndex: |
Muestra el elemento de cola de contenido multimedia en el índice determinado de la cola o organiza la recuperación del elemento desde la app receptora si no está actualmente en la caché. Más... | |
(nullable GCKMediaQueueItem *) | - itemAtIndex:fetchIfNeeded: |
Muestra el elemento de cola de contenido multimedia en el índice determinado de la cola o, de manera opcional, organiza que el elemento se obtenga del receptor si no está actualmente en la caché. Más... | |
(GCKMediaQueueItemID) | - itemIDAtIndex: |
Muestra el ID del elemento en el índice especificado de la cola. Más... | |
(NSInteger) | - indexOfItemWithID: |
Busca el índice de un elemento de la cola. Más... | |
(void) | - reload |
Vuelve a cargar la cola. Más... | |
(void) | - clear |
Borra la cola, quita todos los elementos y vacía la caché. Más... | |
Resumen de la propiedad | |
NSUInteger | itemCount |
La cantidad de elementos que actualmente están en fila 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 un GCKMediaQueue nuevo con el tamaño predeterminado de la caché y el recuento máximo de recuperación predeterminado.
- (instancetype) initWithRemoteMediaClient: | (GCKRemoteMediaClient *) | remoteMediaClient | |
cacheSize: | (NSUInteger) | cacheSize | |
Inicializa un GCKMediaQueue nuevo con el tamaño de caché determinado y el recuento de recuperación máximo predeterminado.
- Parameters
-
cacheSize The cache size. Must be nonzero.
- (instancetype) initWithRemoteMediaClient: | (GCKRemoteMediaClient *) | remoteMediaClient | |
cacheSize: | (NSUInteger) | cacheSize | |
maxFetchCount: | (NSUInteger) | maxFetchCount | |
Inicializa un GCKMediaQueue nuevo con el tamaño de caché determinado y el recuento de recuperación máximo.
- 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 a 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 cola de contenido multimedia en el índice determinado de la cola o organiza la recuperación del elemento desde la app receptora si no está actualmente en la caché.
- Parameters
-
index The index of the item to fetch.
- Resultado que se muestra
- El elemento del índice especificado o
nil
si el elemento no está en la caché, pero se recuperará de manera asíncrona.
- (nullable GCKMediaQueueItem *) itemAtIndex: | (NSUInteger) | index | |
fetchIfNeeded: | (BOOL) | fetch | |
Muestra el elemento de cola de contenido multimedia en el índice determinado de la cola o, de manera opcional, organiza que el elemento se obtenga 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.
- Resultado que se muestra
- El elemento del índice especificado o
nil
si el elemento no está en la caché.
- (GCKMediaQueueItemID) itemIDAtIndex: | (NSUInteger) | index |
Muestra el ID del elemento en el índice especificado de la cola.
- Resultado que se muestra
- El ID del elemento en el índice dado o kGCKMediaQueueInvalidItemID si el índice no es válido.
- (NSInteger) indexOfItemWithID: | (GCKMediaQueueItemID) | itemID |
Busca el índice de un elemento de la cola.
- Parameters
-
itemID The queue item ID.
- Resultado que se muestra
- El índice (es decir, la posición cardinal) del elemento dentro de la cola o NSNotFound si ese elemento no existe 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ículos del receptor.
- (void) clear |
Borra la cola, quita todos los elementos y vacía la caché.
Detalles de la propiedad
|
readnonatomicassign |
La cantidad de elementos que actualmente están en fila
|
readnonatomicassign |
El tamaño de la caché.
|
readnonatomicassign |
La cantidad de elementos en cola que están actualmente en caché.