Pembuka Container

kelas publik ContainerOpener

Class bantuan untuk membuka container.

Ini adalah wrapper di sekitar openContainer(String, Container.Callback) bagi pengguna yang tidak memerlukan tingkat kontrol yang lebih baik yang disediakannya.

Ada tiga status yang dapat menampung penampung:

  • Default: ini adalah penampung yang disertakan dengan aplikasi (baik biner container atau file json yang dikonversi menjadi container).
  • Tidak berlaku: penampung yang telah didownload dari server, tetapi tidak baru-baru ini.
  • Baru: penampung yang telah didownload dari server baru-baru ini.

Berikut ini contoh saat pemanggil ingin menunggu hingga 100 milidetik untuk mendapatkan penampung non-default (mengambil penampung default jika waktunya habis).

   ContainerFuture future =
       ContainerOpener.openContainer(tagManager, containerId, OpenType.PREFER_NON_DEFAULT, 100);
   Container container = future.get();
 

Jika pemanggil ingin diberi tahu secara asinkron saat penampung tersedia, tetapi ingin menentukan waktu tunggu secara manual menjadi 0,5 detik, maka pemanggil harus membuat subclass ContainerOpener.Notifier. Contoh penggunaan:

   ContainerOpener.openContainer(tagManager, containerId, OpenType.PREFER_NON_DEFAULT,
       500, new ContainerOpener.Notifier() {
         @Override
         void containerAvailable(Container container) {
           // Code to handle the container available notification and save the container.
         }
       });
 

Ringkasan Class Bertingkat

antarmuka ContainerOpener.ContainerFuture Objek yang akan menampilkan Container.
antarmuka ContainerOpener.Notifier Objek yang akan menerima notifikasi saat container tersedia untuk digunakan.
enum ContainerOpener.OpenType Preferensi untuk membuka container.

Ringkasan Konstanta

long DEFAULT_TIMEOUT_IN_MILLIS Waktu tunggu default dalam milidetik untuk meminta container.

Ringkasan Metode Publik

statis ContainerOpener.ContainerFuture
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Durasi timeoutInMillis)
statis kosong
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, timeoutInMillis, ContainerOpener.Notifier notifier)

Konstanta

publik statis final panjang DEFAULT_TIMEOUT_IN_MILLIS

Waktu tunggu default dalam milidetik untuk meminta container.

Nilai Konstanta: 2.000

Metode Publik

publik statis ContainerOpener.ContainerFuture openContainer (TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis)

Menunggu hingga timeoutInMillis waktu hingga penampung dimuat (non-default atau baru bergantung pada openType yang ditentukan).

Jika jenis yang dibuka adalah PREFER_NON_DEFAULT, jenis non-default (disimpan atau diambil dari ) penampung dimuat dan ContainerFuture tidak diblokir segera setelah salah satu hal berikut terjadi:

  • kontainer tersimpan dimuat.
  • jika tidak ada penampung tersimpan, penampung jaringan dimuat atau terjadi error jaringan.
  • timer berakhir.

Jika terjadi error jaringan atau timer berakhir, get() mungkin menampilkan container default.

Jika jenis yang dibuka adalah PREFER_FRESH, jenis baru (disimpan atau diambil dari ) penampung dimuat dan ContainerFuture tidak diblokir segera setelah salah satu hal berikut terjadi:

  • kontainer baru tersimpan dimuat.
  • jika tidak ada penampung tersimpan atau penampung tersimpan sudah usang, penampung jaringan dimuat atau terjadi kesalahan jaringan.
  • timer berakhir.

Jika terjadi error jaringan atau timer berakhir, get() mungkin menampilkan penampung default atau penampung usang yang tersimpan.

Jika Anda memanggil openContainer untuk kedua kalinya dengan containerId tertentu, ContainerFuture akan ditampilkan yang get()-nya akan ditampilkan kontainer yang sama seperti yang dilakukan panggilan pertama.

Parameter
tagManager TagManager untuk memanggil openContainer
ID penampung ID penampung yang akan dimuat
openType pilihan cara membuka penampung
timeoutInMillis jumlah maksimum milidetik untuk menunggu pemuatan container (dari toko tersimpan). Jika null, DEFAULT_TIMEOUT_IN_MILLIS akan digunakan.
Hasil
  • objek yang metode get-nya akan mengembalikan kontainer, tetapi dapat memblokir hingga timeoutInMillis hingga container tersedia.

publik statis kosong openContainer (TagManager tagManager, String tagManager, ContainerOpener.OpenType tagManager, Panjang tagManager, ContainerOpener.Notifier

Menunggu hingga timeoutInMillis waktu hingga penampung dimuat (non-default atau baru bergantung pada openType yang ditentukan).

Jika jenis yang dibuka adalah PREFER_NON_DEFAULT, jenis non-default (disimpan atau diambil dari ) yang dimuat dan diteruskan ke pengirim. Pemberitahu dipanggil segera setelah salah satu hal berikut terjadi:

  • kontainer tersimpan dimuat.
  • jika tidak ada penampung tersimpan, penampung jaringan dimuat atau terjadi error jaringan.
  • timer berakhir.

Jika terjadi error jaringan atau timer berakhir, penampung yang diteruskan ke containerAvailable(Container) adalah penampung default.

Jika jenis yang dibuka adalah PREFER_FRESH, jenis baru (disimpan atau diambil dari ) yang dimuat dan diteruskan ke pengirim. Pemberitahu dipanggil segera setelah salah satu hal berikut terjadi:

  • kontainer baru tersimpan dimuat.
  • jika tidak ada penampung tersimpan atau penampung tersimpan sudah usang, penampung jaringan dimuat atau terjadi kesalahan jaringan.
  • timer berakhir.

Jika terjadi error jaringan atau timer berakhir, penampung yang diteruskan ke containerAvailable(Container) dapat berupa penampung tersimpan default atau penampung tersimpan yang sudah tidak berlaku.

Jika Anda memanggil openContainer(TagManager, String, ContainerOpener.OpenType, Long) untuk kedua kalinya dengan containerId tertentu, penampung yang sama yang ditampilkan dari panggilan sebelumnya akan diteruskan ke pengirim segera setelah itu tersedia.

Parameter
tagManager TagManager untuk memanggil openContainer
ID penampung ID penampung yang akan dimuat
openType pilihan cara membuka penampung
timeoutInMillis jumlah maksimum milidetik untuk menunggu pemuatan container (dari toko dan/atau jaringan tersimpan). Jika null, DEFAULT_TIMEOUT_IN_MILLIS akan digunakan.
pemberi notifikasi pemberitahuan yang akan dipanggil saat penampung tersedia. Ini akan menjadi dipanggil dengan kontainer jaringan atau tersimpan, jika tersedia dan dimuat sebelum waktu tunggu. Jika tidak, pemanggilan akan dipanggil dengan penampung default. Pemberitahu dapat dipanggil dari thread yang berbeda.