Pembuka Container

class publik ContainerOpener

Class helper untuk membuka container.

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

Container dapat berada di tiga status:

  • Default: ini adalah container yang dikirim bersama aplikasi (baik container biner 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 waktu 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 Penampung. 
antarmuka ContainerOpener.Notifier Objek yang akan menerima notifikasi saat penampung tersedia untuk digunakan. 
enum ContainerOpener.OpenType Preferensi untuk membuka penampung. 

Ringkasan Konstanta

long DEFAULT_TIMEOUT_IN_MILLIS Waktu tunggu default dalam milidetik untuk meminta container.

Ringkasan Metode Publik

static ContainerOpener.ContainerFuture
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis)
void statis
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis, ContainerOpener.Notifier pemberitahu)

Konstanta

public static final long DEFAULT_TIMEOUT_IN_MILLIS

Waktu tunggu default dalam milidetik untuk meminta container.

Nilai Konstanta: 2000

Metode Publik

public static ContainerOpener.ContainerFuture openContainer (TagManager tagManager, String containerId, ContainerOpener.OpenType openType}{/1

Menunggu pemuatan penampung hingga timeoutInMillis (non default atau baru, bergantung pada openType yang ditentukan).

Jika jenis terbuka adalah PREFER_NON_DEFAULT, penampung non-default (disimpan atau diambil dari jaringan) akan dimuat dan ContainerFuture dibatalkan pemblokirannya segera setelah salah satu hal berikut terjadi:

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

Jika terjadi error jaringan atau timer berakhir, get() dapat menampilkan penampung default.

Jika jenis yang terbuka adalah PREFER_FRESH, penampung baru (disimpan atau diambil dari jaringan) akan dimuat dan ContainerFuture dibatalkan pemblokirannya segera setelah salah satu hal berikut terjadi:

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

Jika terjadi error jaringan atau timer berakhir, get() dapat menampilkan penampung default atau penampung tersimpan yang sudah tidak berlaku.

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

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

public static void openContainer (TagManager tagManager, String tagManager, ContainerOpener.OpenType tagManager} timeout tagManagerContainerOpener.Notifier

Menunggu pemuatan penampung hingga timeoutInMillis (non default atau baru, bergantung pada openType yang ditentukan).

Jika jenis opennya adalah PREFER_NON_DEFAULT, penampung non-default (disimpan atau diambil dari jaringan) akan dimuat dan diteruskan ke pemberi notifikasi. Pemberi tahu dipanggil segera setelah salah satu hal berikut terjadi:

  • penampung tersimpan akan 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 terbuka adalah PREFER_FRESH, penampung baru (disimpan atau diambil dari jaringan) akan dimuat dan diteruskan ke pemberi notifikasi. Pemberi tahu dipanggil segera setelah salah satu hal berikut terjadi:

  • penampung baru yang tersimpan dimuat.
  • jika tidak ada penampung tersimpan atau penampung tersimpan sudah usang, penampung jaringan akan dimuat atau terjadi error jaringan.
  • timer berakhir.

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

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

Parameter
tagManager TagManager untuk memanggil openContainer
containerId ID penampung yang akan dimuat
openType pilihan cara membuka kontainer
timeoutInMillis jumlah maksimum milidetik untuk menunggu memuat container (dari toko dan/atau jaringan tersimpan). Jika null, DEFAULT_TIMEOUT_IN_MILLIS akan digunakan.
notifikasi {i>notifier<i} yang akan dipanggil ketika kontainer tersedia. Aplikasi akan dipanggil dengan penampung jaringan atau tersimpan, jika tersedia dan dimuat sebelum waktu tunggu. Jika tidak, penampung akan dipanggil dengan penampung default. Pemberi tahu mungkin dipanggil dari thread lain.