Обзор
Представление модели данных медиа-очереди произвольной длины.
Этот класс можно использовать в качестве основы для реализации UITableViewDataSource для управления пользовательским интерфейсом очереди мультимедиа.
GCKMediaQueue прослушивает события GCKSessionManager и автоматически присоединяется к GCKRemoteMediaClient при запуске сеанса Cast. Он прослушивает уведомления об изменении очереди от GCKRemoteMediaClient и соответствующим образом обновляет свою внутреннюю модель данных. Аналогично, он использует GCKRemoteMediaClient для получения информации об очереди по требованию.
Модель поддерживает список идентификаторов элементов очереди для всей очереди; он автоматически извлекает этот список всякий раз, когда подключается к сеансу Cast. Он также поддерживает кэш LRU (настраиваемого размера) GCKMediaQueueItems, привязанный к идентификатору элемента очереди.
Метод itemAtIndex: (GCKMediaQueue) используется для извлечения элемента очереди по заданному индексу. Если GCKMediaQueueItem в настоящее время отсутствует в кэше, выполняется асинхронный запрос на получение этого элемента от получателя, и делегат в конечном итоге уведомляется о получении запрошенных элементов.
Если за очень короткий промежуток времени выполняется несколько вызовов этого метода, идентификаторы запрошенных элементов группируются внутри, чтобы уменьшить количество сделанных сетевых запросов. Поскольку существует верхний предел количества элементов очереди, которые можно получить от получателя одновременно, GCKMediaQueue сохраняет скользящее окно из N идентификаторов последних элементов, которые необходимо получить. Поэтому, если за короткий промежуток времени запрошено очень большое количество элементов, фактически будут получены только последние N элементов. Такое поведение позволяет эффективно управлять очень длинной очередью в пользовательском интерфейсе приложения, которую пользователь может быстро и/или часто прокручивать.
GCKMediaQueue не предоставляет никаких методов для прямого изменения очереди, поскольку любое такое изменение включает в себя асинхронный сетевой запрос к получателю (через методы GCKRemoteMediaClient ), который потенциально может завершиться ошибкой. GCKMediaQueue должен обеспечивать согласованное представление очереди в том виде, в каком она существует на получателе, поэтому внесение локальных изменений в модель данных, которые еще не зафиксированы на получателе, может привести к некорректному поведению пользовательского интерфейса.
См. GCKMediaQueueDelegate для протокола делегирования.
- С
- 4.3.4
Наследует NSObject.
Сводка метода экземпляра | |
(instancetype) | - init |
(instancetype) | - initWithRemoteMediaClient: |
Инициализирует новый GCKMediaQueue с размером кэша по умолчанию и максимальным количеством выборок по умолчанию. Более... | |
(instancetype) | - initWithRemoteMediaClient:cacheSize: |
Инициализирует новый GCKMediaQueue с заданным размером кэша и максимальным количеством выборок по умолчанию. Более... | |
(instancetype) | - initWithRemoteMediaClient:cacheSize:maxFetchCount: |
Инициализирует новый GCKMediaQueue с заданным размером кэша и заданным максимальным количеством выборок. Более... | |
(void) | - addDelegate: |
Добавляет делегата в список делегатов этого объекта. Более... | |
(void) | - removeDelegate: |
Удаляет делегата из списка делегатов этого объекта. Более... | |
(nullable GCKMediaQueueItem *) | - itemAtIndex: |
Возвращает элемент очереди мультимедиа по заданному индексу в очереди или организует получение элемента от получателя, если его в данный момент нет в кеше. Более... | |
(nullable GCKMediaQueueItem *) | - itemAtIndex:fetchIfNeeded: |
Возвращает элемент очереди мультимедиа по заданному индексу в очереди или, при необходимости, обеспечивает получение элемента от получателя, если его в данный момент нет в кеше. Более... | |
( GCKMediaQueueItemID ) | - itemIDAtIndex: |
Возвращает идентификатор элемента по заданному индексу в очереди. Более... | |
(NSInteger) | - indexOfItemWithID: |
Ищет индекс элемента очереди в очереди. Более... | |
(void) | - reload |
Перезагружает очередь. Более... | |
(void) | - clear |
Очищает очередь, удаляя все элементы и очищая кеш. Более... | |
Сводная информация о недвижимости | |
NSUInteger | itemCount |
Количество элементов, находящихся в настоящее время в очереди. Более... | |
NSUInteger | cacheSize |
Размер кэша. Более... | |
NSUInteger | cachedItemCount |
Количество элементов очереди, которые в данный момент находятся в кеше. Более... | |
Подробности метода
- (instancetype) initWithRemoteMediaClient: | ( GCKRemoteMediaClient *) | remoteMediaClient |
Инициализирует новый GCKMediaQueue с размером кэша по умолчанию и максимальным количеством выборок по умолчанию.
- (instancetype) initWithRemoteMediaClient: | ( GCKRemoteMediaClient *) | remoteMediaClient | |
cacheSize: | (NSUInteger) | cacheSize | |
Инициализирует новый GCKMediaQueue с заданным размером кэша и максимальным количеством выборок по умолчанию.
- Parameters
-
cacheSize The cache size. Must be nonzero.
- (instancetype) initWithRemoteMediaClient: | ( GCKRemoteMediaClient *) | remoteMediaClient | |
cacheSize: | (NSUInteger) | cacheSize | |
maxFetchCount: | (NSUInteger) | maxFetchCount | |
Инициализирует новый GCKMediaQueue с заданным размером кэша и заданным максимальным количеством выборок.
- Parameters
-
cacheSize The cache size. Must be nonzero. maxFetchCount The maxiumum fetch count with minimum being 1.
- (void) addDelegate: | (id< GCKMediaQueueDelegate >) | delegate |
Добавляет делегата в список делегатов этого объекта.
- Parameters
-
delegate The delegate to add. The delegate will be retained until removeDelegate: is called.
- (void) removeDelegate: | (id< GCKMediaQueueDelegate >) | delegate |
Удаляет делегата из списка делегатов этого объекта.
- Parameters
-
delegate The delegate to remove.
- (nullable GCKMediaQueueItem *) itemAtIndex: | (NSUInteger) | index |
Возвращает элемент очереди мультимедиа по заданному индексу в очереди или организует получение элемента от получателя, если его в данный момент нет в кеше.
- Parameters
-
index The index of the item to fetch.
- Возврат
- Элемент по данному индексу или
nil
, если элемент в данный момент не находится в кеше, но будет получен асинхронно.
- (nullable GCKMediaQueueItem *) itemAtIndex: | (NSUInteger) | index | |
fetchIfNeeded: | (BOOL) | fetch | |
Возвращает элемент очереди мультимедиа по заданному индексу в очереди или, при необходимости, обеспечивает получение элемента от получателя, если его в данный момент нет в кеше.
- 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.
- Возврат
- Элемент по данному индексу или
nil
, если элемент в настоящее время отсутствует в кеше.
- ( GCKMediaQueueItemID ) itemIDAtIndex: | (NSUInteger) | index |
Возвращает идентификатор элемента по заданному индексу в очереди.
- Возврат
- Идентификатор элемента по данному индексу или kGCKMediaQueueInvalidItemID, если индекс недействителен.
- (NSInteger) indexOfItemWithID: | ( GCKMediaQueueItemID ) | itemID |
Ищет индекс элемента очереди в очереди.
- Parameters
-
itemID The queue item ID.
- Возврат
- Индекс (то есть кардинальная позиция) элемента в очереди или NSNotFound, если такого элемента в очереди нет.
- (void) reload |
Перезагружает очередь.
Кэш будет очищен, а список идентификаторов элементов будет повторно получен от получателя.
- (void) clear |
Очищает очередь, удаляя все элементы и очищая кеш.
Детали недвижимости
|
read nonatomic assign |
Количество элементов, находящихся в настоящее время в очереди.
|
read nonatomic assign |
Размер кэша.
|
read nonatomic assign |
Количество элементов очереди, которые в данный момент находятся в кеше.