کلاس کمکی برای باز کردن ظروف.
این یک بسته بندی در اطراف روش 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
مهلت زمانی پیشفرض در میلیثانیه برای درخواست ظرف.
روش های عمومی
عمومی ثابت 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 استفاده خواهد شد. |
اطلاع دهنده | یک اعلان کننده که وقتی کانتینر در دسترس باشد فراخوانی می شود. در صورت موجود بودن و قبل از اتمام زمان، با ظرف ذخیره شده یا شبکه فراخوانی می شود. در غیر این صورت با کانتینر پیش فرض فراخوانی می شود. اعلان کننده ممکن است از یک رشته دیگر فراخوانی شود. |