Kapsayıcı Açıcı

herkese açık sınıf ContainerOpener

Container'ları açmak için yardımcı sınıfı.

Bu, openContainer(String, Container.Callback) yönteminin sağladığı hassas kontrol düzeyine ihtiyaç duymayan kullanıcılar için bir sarmalayıcıdır.

Bir kapsayıcının içinde bulunabileceği üç durum vardır:

  • Varsayılan: Bu, uygulamayla birlikte gönderilen kapsayıcıdır (ikili program kapsayıcısı veya container'a dönüştürülmüş bir json dosyası).
  • Eski: Sunucudan indirilmiş ancak yakın zamanda indirilmemiş bir kapsayıcıdır.
  • Fresh: Sunucudan kısa süre önce indirilen bir kapsayıcı.

Arayanın varsayılan olmayan kapsayıcıyı almak için 100 milisaniyeye kadar beklemek istediği bir örneği aşağıda bulabilirsiniz (zaman aşımına uğrarsa varsayılan kapsayıcıyı alır).

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

Arayan, kapsayıcı kullanılabilir olduğunda eşzamansız olarak bildirim almak istiyor ancak zaman aşımını 0,5 saniye olarak manuel olarak belirtmek istiyorsa ContainerOpener.Notifier alt sınıfını belirlemelidir. Örnek kullanım:

   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.
         }
       });
 

İç İçe geçmiş Sınıf Özeti

arayüz ContainerOpener.ContainerFuture Kapsayıcı döndürecek bir nesne. 
arayüz ContainerOpener.Notifier Kapsayıcı kullanıma sunulduğunda bildirim alacak nesne. 
enum ContainerOpener.OpenType Kapsayıcı açma tercihleri. 

Sabit Özet

uzun DEFAULT_TIMEOUT_IN_MILLIS Kapsayıcı isteği için milisaniye cinsinden varsayılan zaman aşımı.

Herkese Açık Yöntem Özeti

statik ContainerOpener.ContainerFuture
openContainer(TagManager tagManager, Dize containerId, ContainerOpener.OpenType openType, Uzun timeoutInMillis)
statik geçersiz
openContainer(TagManager tagManager, Dize containerId, ContainerOpener.OpenType openType, Uzun timeoutInMillis, ContainerOpener.Notifier bildirimcisi)

Sabitler

herkese açık statik nihai uzun DEFAULT_TIMEOUT_IN_MILLIS

Kapsayıcı isteği için milisaniye cinsinden varsayılan zaman aşımı.

Sabit Değer: 2000

Herkese Açık Yöntemler

herkese açık static ContainerOpener.ContainerFuture openContainer (TagManager tagManager, Dize tagManager, ContainerOpener.OpenType tagManagerAçık tagManager, Dize tagManager

Bir kapsayıcının yüklenmesi için timeoutInMillis kadar bir süre bekler (belirtilen openType öğesine bağlı olarak varsayılan olmayan veya yeni olmayan).

Açık tür PREFER_NON_DEFAULT ise varsayılan olmayan (kaydedilmiş veya ağdan alınmış) bir kapsayıcı yüklenir ve aşağıdakilerden biri gerçekleşir gerçekleşmez ContainerFuture'ın engellemesi kaldırılır:

  • Kayıtlı bir kapsayıcı yüklendiğinden emin olun.
  • Kayıtlı kapsayıcı yoksa, bir ağ kapsayıcısı yüklenir veya bir ağ hatası oluşur.
  • zamanlayıcı sona erer.

Bir ağ hatası oluşursa veya zamanlayıcının süresi dolarsa get() varsayılan bir kapsayıcı döndürebilir.

Açık tür PREFER_FRESH ise yeni (kaydedilmiş veya ağdan alınmış) bir kapsayıcı yüklenir ve aşağıdakilerden biri gerçekleşir gerçekleşmez ContainerFuture'ın engellemesi kaldırılır:

  • kaydedilmiş yeni bir kapsayıcı yüklenir.
  • herhangi bir kayıtlı kapsayıcı yoksa veya kayıtlı kapsayıcı eskiyse, bir ağ kapsayıcısı yüklenmişse ya da bir ağ hatası oluşur.
  • zamanlayıcı sona erer.

Bir ağ hatası oluşursa veya zamanlayıcının süresi dolarsa get() varsayılan bir kapsayıcı veya kayıtlı eski bir kapsayıcı döndürebilir.

Belirli bir containerId ile ikinci kez openContainer çağrısı yaparsanız get(), ilk çağrıyla aynı kapsayıcıyı döndürecek olan bir ContainerFuture döndürülür.

Parametreler
tagManager OpenContainer çağrılacağı TagManager
containerId yüklenecek container'ın kimliği
openType kapsayıcının nasıl açılacağını seçme
timeoutInMillis kapsayıcının yüklenmesi için beklenecek maksimum milisaniye sayısı (kayıtlı mağazadan). Null ise DEFAULT_TIMEOUT_IN_MILLIS kullanılır.
İlerlemeler
  • get yöntemi container'ı döndürecek ancak container kullanılabilir olana kadar zaman aşımıInMillis değerine kadar engel oluşturabilecek bir nesnedir.

herkese açık static void openContainer (TagManager tagManager, String tagManager, ContainerOpener.OpenType tagManager tagManagerContainerOpener.Notifier

Bir kapsayıcının yüklenmesi için timeoutInMillis kadar bir süre bekler (belirtilen openType öğesine bağlı olarak varsayılan olmayan veya yeni olmayan).

Açık tür PREFER_NON_DEFAULT ise varsayılan olmayan (kaydedilmiş veya ağdan alınmış) bir kapsayıcı yüklenir ve bilgilendiriciye aktarılır. Bildirimci, aşağıdakilerden biri gerçekleşir gerçekleşmez çağrılır:

  • Kayıtlı bir kapsayıcı yüklendiğinden emin olun.
  • Kayıtlı kapsayıcı yoksa, bir ağ kapsayıcısı yüklenir veya bir ağ hatası oluşur.
  • zamanlayıcı sona erer.

Bir ağ hatası oluşursa veya zamanlayıcının süresi dolarsa containerAvailable(Container) içine geçirilen kapsayıcı, varsayılan kapsayıcı olur.

Açık tür PREFER_FRESH ise yeni (kaydedilmiş veya ağdan alınmış) bir kapsayıcı yüklenir ve bilgilendiriciye aktarılır. Bildirimci, aşağıdakilerden biri gerçekleşir gerçekleşmez çağrılır:

  • kaydedilmiş yeni bir kapsayıcı yüklenir.
  • herhangi bir kayıtlı kapsayıcı yoksa veya kayıtlı kapsayıcı eskiyse, bir ağ kapsayıcısı yüklenmişse veya bir ağ hatası oluşur.
  • zamanlayıcı sona erer.

Bir ağ hatası oluşursa veya zamanlayıcının süresi dolarsa containerAvailable(Container) içine geçirilen kapsayıcı, varsayılan veya eski bir kapsayıcı olabilir.

Belirli bir containerId ile ikinci kez openContainer(TagManager, String, ContainerOpener.OpenType, Long) çağrısı yaparsanız önceki çağrıdan döndürülen kapsayıcı, kullanılabilir olduğu anda bilgilendiriciye iletilir.

Parametreler
tagManager OpenContainer çağrılacağı TagManager
containerId yüklenecek container'ın kimliği
openType kapsayıcının nasıl açılacağını seçme
timeoutInMillis kapsayıcının yüklenmesi için beklenecek maksimum milisaniye sayısı (kayıtlı mağazadan ve/veya ağdan). Null ise DEFAULT_TIMEOUT_IN_MILLIS kullanılır.
bilgilendirici kapsayıcı kullanılabilir olduğunda çağrılacak bir bilgilendirici. Varsa kayıtlı kapsayıcı veya ağ kapsayıcısıyla çağrılır ve zaman aşımından önce yüklenir. Aksi takdirde varsayılan kapsayıcıyla çağrılır. Bildirimci farklı bir iş parçacığından çağrılabilir.