Ringkasan
Representasi model data dari antrean media dengan panjang arbitrer.
Class ini dapat digunakan sebagai dasar untuk implementasi UITableViewDataSource untuk mendorong UI antrean media.
GCKMediaQueue memproses peristiwa GCKSessionManager dan secara otomatis mengaitkan dirinya ke GCKRemoteMediaClient saat sesi Transmisi dimulai. Fungsi ini memproses notifikasi perubahan antrean dari GCKRemoteMediaClient dan memperbarui model data internalnya. Demikian juga, kode ini menggunakan GCKRemoteMediaClient untuk mengambil informasi antrean sesuai permintaan.
Model ini mempertahankan daftar ID item antrean untuk seluruh antrean; model ini secara otomatis mengambil daftar ini setiap kali dilampirkan ke sesi Transmisi. Plugin ini juga mempertahankan cache LRU (dengan ukuran yang dapat dikonfigurasi) dari GCKMediaQueueItems, yang dikunci oleh ID item antrean.
Metode itemAtIndex: (GCKMediaQueue) digunakan untuk mengambil item antrean pada indeks tertentu. Jika GCKMediaQueueItem saat ini tidak ada dalam cache, permintaan asinkron dibuat untuk mengambil item tersebut dari penerima, dan delegasi akan diberi tahu saat item yang diminta diterima.
Jika beberapa panggilan ke metode ini dilakukan dalam waktu yang sangat singkat, ID item yang diminta akan dikelompokkan secara internal untuk mengurangi jumlah permintaan jaringan yang dibuat. Karena ada batas atas jumlah item antrean yang dapat diambil dari penerima pada satu waktu, GCKMediaQueue menyimpan jendela bergulir dari ID item terakhir yang akan diambil. Oleh karena itu, jika permintaan item dalam jumlah yang sangat besar dalam waktu singkat, hanya N item terakhir yang benar-benar akan diambil. Perilaku ini memungkinkan pengelolaan antrean yang sangat panjang secara efisien di UI aplikasi, yang dapat dilakukan dengan cepat dan/atau sering di-scroll oleh pengguna.
GCKMediaQueue tidak menyediakan metode apa pun untuk memodifikasi antrean secara langsung, karena setiap perubahan tersebut melibatkan permintaan jaringan asinkron ke penerima (melalui metode di GCKRemoteMediaClient), yang berpotensi gagal dengan error. GCKMediaQueue harus memastikan representasi antrean yang konsisten seperti yang ada di penerima, sehingga membuat perubahan lokal pada model data yang belum di-commit di penerima dapat menyebabkan perilaku UI yang salah.
Lihat GCKMediaQueueDelegate untuk protokol delegasi.
- Sejak
- 4.3.4
Mewarisi NSObject.
Ringkasan Metode Instance | |
(instancetype) | - init |
(instancetype) | - initWithRemoteMediaClient: |
Menginisialisasi GCKMediaQueue baru dengan ukuran cache default dan jumlah pengambilan maksimum default. Lainnya... | |
(instancetype) | - initWithRemoteMediaClient:cacheSize: |
Menginisialisasi GCKMediaQueue baru dengan ukuran cache yang ditentukan dan jumlah pengambilan maksimum default. Lainnya... | |
(instancetype) | - initWithRemoteMediaClient:cacheSize:maxFetchCount: |
Menginisialisasi GCKMediaQueue baru dengan ukuran cache yang ditentukan dan jumlah pengambilan maksimum yang ditentukan. Lainnya... | |
(void) | - addDelegate: |
Menambahkan delegasi ke daftar delegasi objek ini. Lainnya... | |
(void) | - removeDelegate: |
Menghapus delegasi dari daftar delegasi objek ini. Lainnya... | |
(nullable GCKMediaQueueItem *) | - itemAtIndex: |
Menampilkan item antrean media pada indeks yang diberikan dalam antrean, atau mengatur agar item diambil dari penerima jika saat ini tidak ada dalam cache. Lainnya... | |
(nullable GCKMediaQueueItem *) | - itemAtIndex:fetchIfNeeded: |
Menampilkan item antrean media pada indeks yang diberikan dalam antrean, atau secara opsional mengatur agar item diambil dari penerima jika item tersebut saat ini tidak ada dalam cache. Lainnya... | |
(GCKMediaQueueItemID) | - itemIDAtIndex: |
Menampilkan ID item dari item pada indeks yang diberikan dalam antrean. Lainnya... | |
(NSInteger) | - indexOfItemWithID: |
Mencari indeks item dalam antrean. Lainnya... | |
(void) | - reload |
Memuat ulang antrean. Lainnya... | |
(void) | - clear |
Mengosongkan antrean, menghapus semua elemen, dan mengosongkan cache. Lainnya... | |
Ringkasan Properti | |
NSUInteger | itemCount |
Jumlah item dalam antrean saat ini. Lainnya... | |
NSUInteger | cacheSize |
Ukuran cache. Lainnya... | |
NSUInteger | cachedItemCount |
Jumlah item antrean yang saat ini berada dalam cache. Lainnya... | |
Detail Metode
- (instancetype) initWithRemoteMediaClient: | (GCKRemoteMediaClient *) | remoteMediaClient |
Menginisialisasi GCKMediaQueue baru dengan ukuran cache default dan jumlah pengambilan maksimum default.
- (instancetype) initWithRemoteMediaClient: | (GCKRemoteMediaClient *) | remoteMediaClient | |
cacheSize: | (NSUInteger) | cacheSize | |
Menginisialisasi GCKMediaQueue baru dengan ukuran cache yang ditentukan dan jumlah pengambilan maksimum default.
- Parameters
-
cacheSize The cache size. Must be nonzero.
- (instancetype) initWithRemoteMediaClient: | (GCKRemoteMediaClient *) | remoteMediaClient | |
cacheSize: | (NSUInteger) | cacheSize | |
maxFetchCount: | (NSUInteger) | maxFetchCount | |
Menginisialisasi GCKMediaQueue baru dengan ukuran cache yang ditentukan dan jumlah pengambilan maksimum yang ditentukan.
- Parameters
-
cacheSize The cache size. Must be nonzero. maxFetchCount The maxiumum fetch count with minimum being 1.
- (void) addDelegate: | (id< GCKMediaQueueDelegate >) | delegate |
Menambahkan delegasi ke daftar delegasi objek ini.
- Parameters
-
delegate The delegate to add. The delegate will be retained until removeDelegate: is called.
- (void) removeDelegate: | (id< GCKMediaQueueDelegate >) | delegate |
Menghapus delegasi dari daftar delegasi objek ini.
- Parameters
-
delegate The delegate to remove.
- (nullable GCKMediaQueueItem *) itemAtIndex: | (NSUInteger) | index |
Menampilkan item antrean media pada indeks yang diberikan dalam antrean, atau mengatur agar item diambil dari penerima jika saat ini tidak ada dalam cache.
- Parameters
-
index The index of the item to fetch.
- Hasil
- Item pada indeks tertentu, atau
nil
jika item saat ini tidak berada dalam cache, tetapi akan diambil secara asinkron.
- (nullable GCKMediaQueueItem *) itemAtIndex: | (NSUInteger) | index | |
fetchIfNeeded: | (BOOL) | fetch | |
Menampilkan item antrean media pada indeks yang diberikan dalam antrean, atau secara opsional mengatur agar item diambil dari penerima jika item tersebut saat ini tidak ada dalam 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.
- Hasil
- Item pada indeks tertentu, atau
nil
jika item tersebut saat ini tidak berada dalam cache.
- (GCKMediaQueueItemID) itemIDAtIndex: | (NSUInteger) | index |
Menampilkan ID item dari item pada indeks yang diberikan dalam antrean.
- Hasil
- ID item pada indeks yang diberikan, atau kGCKMediaQueueInvalidItemID jika indeks tidak valid.
- (NSInteger) indexOfItemWithID: | (GCKMediaQueueItemID) | itemID |
Mencari indeks item dalam antrean.
- Parameters
-
itemID The queue item ID.
- Hasil
- Indeks (yaitu, posisi utama) item dalam antrean, atau NSNotFound jika tidak ada item semacam itu dalam antrean.
- (void) reload |
Memuat ulang antrean.
Cache akan dikosongkan dan daftar ID item akan diambil ulang dari penerima.
- (void) clear |
Mengosongkan antrean, menghapus semua elemen, dan mengosongkan cache.
Detail Properti
|
readnonatomicassign |
Jumlah item dalam antrean saat ini.
|
readnonatomicassign |
Ukuran cache.
|
readnonatomicassign |
Jumlah item antrean yang saat ini berada dalam cache.