ظرف باز کن

کلاس عمومی ContainerOpener

کلاس کمکی برای باز کردن ظروف.

این یک بسته بندی در اطراف روش openContainer(String, Container.Callback) برای کاربرانی است که به سطح دقیق کنترلی که ارائه می کند نیاز ندارند.

یک ظرف می تواند در سه حالت باشد:

  • پیش‌فرض: این کانتینری است که با برنامه ارسال می‌شود (اعم از یک ظرف باینری یا یک فایل json که به یک کانتینر تبدیل شده است).
  • Stale: محفظه ای که از سرور دانلود شده است، اما نه اخیرا.
  • تازه: ظرفی که اخیراً از سرور دانلود شده است.

در اینجا مثالی وجود دارد که در آن تماس‌گیرنده می‌خواهد تا 100 میلی‌ثانیه صبر کند تا ظرف غیرپیش‌فرض را دریافت کند (در صورت تمام شدن زمان، ظرف پیش‌فرض را بازیابی می‌کند).

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

اگر تماس‌گیرنده می‌خواهد به طور ناهمزمان هنگام در دسترس بودن کانتینر مطلع شود، اما بخواهد به‌طور دستی زمان وقفه را 0.5 ثانیه تعیین کند، تماس‌گیرنده باید ContainerOpener.Notifier را زیر کلاس قرار دهد. استفاده از نمونه:

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

خلاصه کلاس تودرتو

رابط ContainerOpener.ContainerFuture شی ای که یک Container را برمی گرداند.
رابط ContainerOpener.Notifier شیئی که وقتی کانتینری برای استفاده در دسترس است، اعلان دریافت می کند.
enum ContainerOpener.OpenType ترجیحات برای باز کردن ظرف.

خلاصه ثابت

طولانی DEFAULT_TIMEOUT_IN_MILLIS مهلت زمانی پیش‌فرض در میلی‌ثانیه برای درخواست ظرف.

خلاصه روش عمومی

استاتیک ContainerOpener.ContainerFuture
openContainer ( TagManager tagManager , String containerId , ContainerOpener.OpenType openType , Long timeoutInMillis )
فضای خالی ساکن
openContainer ( TagManager tagManager , String containerId , ContainerOpener.OpenType openType , Long timeoutInMillis , ContainerOpener.Notifier notifier )

ثابت ها

عمومی استاتیک طولانی نهایی DEFAULT_TIMEOUT_IN_MILLIS

مهلت زمانی پیش‌فرض در میلی‌ثانیه برای درخواست ظرف.

ارزش ثابت: 2000

روش های عمومی

عمومی ثابت ContainerOpener.ContainerFuture openContainer ( TagManager tagManager , String containerId , ContainerOpener.OpenType openType , Long timeoutInMillis )

تا زمان timeoutInMillis منتظر می ماند تا یک ظرف بارگیری شود (بسته به openType مشخص شده غیر پیش فرض یا تازه).

اگر نوع باز PREFER_NON_DEFAULT باشد، یک کانتینر غیر پیش‌فرض (ذخیره یا بازیابی شده از شبکه) بارگیری می‌شود و به محض اینکه یکی از موارد زیر رخ می‌دهد، ContainerFuture رفع انسداد می‌شود:

  • یک ظرف ذخیره شده بارگیری می شود.
  • اگر ظرف ذخیره شده ای وجود نداشته باشد، یک کانتینر شبکه بارگیری می شود یا یک خطای شبکه رخ می دهد.
  • تایمر منقضی می شود

اگر خطای شبکه رخ دهد یا تایمر منقضی شود، get() ممکن است یک کانتینر پیش فرض را برگرداند.

اگر نوع باز PREFER_FRESH باشد، یک کانتینر تازه (ذخیره یا بازیابی شده از شبکه) بارگیری می شود و به محض اینکه یکی از موارد زیر رخ می دهد، ContainerFuture رفع انسداد می شود:

  • یک ظرف تازه ذخیره شده بارگیری می شود.
  • اگر کانتینر ذخیره شده ای وجود نداشته باشد یا کانتینر ذخیره شده قدیمی باشد، یک کانتینر شبکه بارگیری شده است یا یک خطای شبکه رخ می دهد.
  • تایمر منقضی می شود

اگر خطای شبکه رخ دهد یا تایمر منقضی شود، get() ممکن است یک کانتینر پیش فرض یا یک محفظه قدیمی ذخیره شده را برگرداند.

اگر بار دوم openContainer با یک containerId فراخوانی کنید، یک ContainerFuture برگردانده می شود که get() همان کانتینری را که فراخوانی اول انجام داد برمی گرداند.

مولفه های
TagManager TagManager که در آن openContainer را فراخوانی کنید
شناسه کانتینر شناسه کانتینر برای بارگیری
openType انتخاب نحوه باز کردن ظرف
timeoutInMillis حداکثر تعداد میلی ثانیه برای صبر کردن برای بارگیری ظرف (از فروشگاه ذخیره شده). در صورت تهی، DEFAULT_TIMEOUT_IN_MILLIS استفاده خواهد شد.
برمی گرداند
  • شی‌ای که متد دریافت آن ظرف را برمی‌گرداند، اما می‌تواند تا زمانی که ظرف در دسترس باشد، تا timeoutInMillis مسدود کند.

عمومی استاتیک openContainer ( TagManager tagManager , String containerId , ContainerOpener.OpenType openType , Long timeoutInMillis , ContainerOpener.Notifier notifier )

تا زمان timeoutInMillis منتظر می ماند تا یک ظرف بارگیری شود (بسته به openType مشخص شده غیر پیش فرض یا تازه).

اگر نوع باز PREFER_NON_DEFAULT باشد، یک کانتینر غیر پیش‌فرض (ذخیره یا بازیابی شده از شبکه) بارگیری می‌شود و به اطلاع‌دهنده ارسال می‌شود. به محض اینکه یکی از موارد زیر رخ دهد، اعلان کننده فراخوانی می شود:

  • یک ظرف ذخیره شده بارگیری می شود.
  • اگر ظرف ذخیره شده ای وجود نداشته باشد، یک کانتینر شبکه بارگیری می شود یا یک خطای شبکه رخ می دهد.
  • تایمر منقضی می شود

اگر خطای شبکه رخ دهد یا تایمر منقضی شود، کانتینری که به containerAvailable(Container) منتقل شده است یک کانتینر پیش فرض است.

اگر نوع باز PREFER_FRESH باشد، یک کانتینر تازه (ذخیره شده یا بازیابی شده از شبکه) بارگیری می شود و به اطلاع دهنده ارسال می شود. به محض اینکه یکی از موارد زیر رخ دهد، اعلان کننده فراخوانی می شود:

  • یک ظرف تازه ذخیره شده بارگیری می شود.
  • اگر کانتینر ذخیره شده ای وجود نداشته باشد یا کانتینر ذخیره شده قدیمی باشد، یک کانتینر شبکه بارگیری شده است یا یک خطای شبکه رخ می دهد.
  • تایمر منقضی می شود

اگر خطای شبکه رخ دهد یا تایمر منقضی شود، کانتینری که به containerAvailable(Container) منتقل می‌شود ممکن است یک کانتینر پیش‌فرض یا ذخیره‌شده قدیمی باشد.

اگر بار دوم با openContainer(TagManager, String, ContainerOpener.OpenType, Long) با یک containerId معین تماس بگیرید، همان کانتینری که از تماس قبلی برگردانده شده است به محض در دسترس قرار گرفتن به اطلاع دهنده منتقل می شود.

مولفه های
TagManager TagManager که در آن openContainer را فراخوانی کنید
شناسه کانتینر شناسه کانتینر برای بارگیری
openType انتخاب نحوه باز کردن ظرف
timeoutInMillis حداکثر تعداد میلی ثانیه برای بارگیری ظرف (از فروشگاه ذخیره شده و/یا شبکه). در صورت تهی، DEFAULT_TIMEOUT_IN_MILLIS استفاده خواهد شد.
اطلاع دهنده یک اعلان کننده که وقتی کانتینر در دسترس باشد فراخوانی می شود. در صورت موجود بودن و قبل از اتمام زمان، با ظرف ذخیره شده یا شبکه فراخوانی می شود. در غیر این صورت با کانتینر پیش فرض فراخوانی می شود. اعلان کننده ممکن است از یک رشته دیگر فراخوانی شود.