कंटेनर ओपनर

पब्लिक क्लास ContainerOpener

कंटेनर खोलने के लिए हेल्पर क्लास.

यह openContainer(String, Container.Callback) के चारों ओर एक रैपर है उपयोग करें, जिन्हें इसके द्वारा उपलब्ध कराए गए नियंत्रण के सूक्ष्म स्तर की आवश्यकता नहीं है.

कंटेनर तीन तरह की स्थिति में हो सकता है:

  • डिफ़ॉल्ट: यह वह कंटेनर है जो ऐप्लिकेशन के साथ शिप किया जाता है (या तो बाइनरी) कंटेनर या json फ़ाइल, जिसे कंटेनर में बदला गया है).
  • पुराना: एक कंटेनर, जिसे सर्वर से डाउनलोड किया गया है, लेकिन हाल ही में डाउनलोड नहीं किया गया है.
  • नई जानकारी: एक कंटेनर, जिसे हाल ही में सर्वर से डाउनलोड किया गया है.

यहां एक उदाहरण दिया गया है, जिसमें कॉल करने वाला (कॉलर) 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 एक ऑब्जेक्ट जो कंटेनर दिखाएगा.
इंटरफ़ेस ContainerOpener.Notifier वह ऑब्जेक्ट जिसे इस्तेमाल के लिए कंटेनर उपलब्ध होने पर सूचना मिलेगी.
enum ContainerOpener.OpenType कंटेनर खोलने के लिए प्राथमिकताएं.

तय की गई खास जानकारी

लंबा DEFAULT_TIMEOUT_IN_MILLIS कंटेनर का अनुरोध करने के लिए, मिलीसेकंड में डिफ़ॉल्ट टाइम आउट.

सार्वजनिक तौर पर उपलब्ध तरीके के बारे में खास जानकारी

स्टैटिक ContainerOpener.ContainerFuture
openContainer(TagManager tagManager, स्ट्रिंग containerId, ContainerOpener.OpenType openType, Long timeoutInMillis)
स्टैटिक अमान्य
openContainer(TagManager tagManager, स्ट्रिंग containerId, ContainerOpener.OpenType openType, Long timeoutInMillis, ContainerOpener.Notifier notifier)

स्थिरांक

सार्वजनिक स्टैटिक फ़ाइनल लंबा DEFAULT_TIMEOUT_IN_MILLIS

कंटेनर का अनुरोध करने के लिए, मिलीसेकंड में डिफ़ॉल्ट टाइम आउट.

कॉन्सटेंट वैल्यू: 2,000

सार्वजनिक तरीके

सार्वजनिक स्टैटिक ContainerOpener.ContainerFuture openContainer (TagManager tagManager, स्ट्रिंग containerId, ContainerOpener.OpenType openType, Long timeoutInMillis)

कंटेनर के लोड होने में timeoutInMillis समय लग सकता है (यह डिफ़ॉल्ट या नया नहीं है) तय किए गए openType के हिसाब से).

अगर ओपन टाइप PREFER_NON_DEFAULT है, तो यह डिफ़ॉल्ट तौर पर सेट नहीं होता (इसे सेव किया गया है या यहां से वापस लिया गया है) नेटवर्क) कंटेनर लोड होता है और ContainerFuture को जैसे ही अनब्लॉक किया जाता है इनमें से कोई एक स्थिति होती है:

  • सेव किया गया कंटेनर लोड होता है.
  • अगर कोई कंटेनर सेव नहीं किया गया है, तो नेटवर्क कंटेनर लोड होता है या नेटवर्क की गड़बड़ी होती है.
  • टाइमर का समय खत्म हो जाता है.

अगर नेटवर्क की गड़बड़ी होती है या टाइमर का समय खत्म हो जाता है, तो get() वापस आ सकता है एक डिफ़ॉल्ट कंटेनर.

अगर ओपन टाइप PREFER_FRESH है, तो नया (सेव किया गया या यहां से लिया गया) नेटवर्क) कंटेनर लोड होता है और ContainerFuture को जैसे ही अनब्लॉक किया जाता है इनमें से कोई एक स्थिति होती है:

  • सेव किया गया एक नया कंटेनर लोड हो जाता है.
  • अगर कोई सहेजा गया कंटेनर नहीं है या सहेजा गया कंटेनर पुराना है, तो एक नेटवर्क कंटेनर लोड हो जाता है या नेटवर्क की गड़बड़ी होती है.
  • टाइमर का समय खत्म हो जाता है.

अगर नेटवर्क की गड़बड़ी होती है या टाइमर का समय खत्म हो जाता है, तो get() वापस आ सकता है एक डिफ़ॉल्ट कंटेनर या सेव किया गया पुराना कंटेनर.

अगर आपने containerId पर, openContainer को दूसरी बार कॉल किया है, तो एक ContainerFuture लौटाया जाएगा जिसका get() वापस आएगा वही कंटेनर, जो पहले कॉल में किया गया था.

पैरामीटर
tagManager वह TagManager जिस पर OpenContainer को कॉल करना है
containerId लोड किए जाने वाले कंटेनर का आईडी
openType कंटेनर को खोलने का विकल्प
timeoutInMillis कंटेनर को लोड करने के लिए प्रतीक्षा करने के लिए मिलीसेकंड की अधिकतम संख्या (से सेव की गई स्टोर). अगर कोई वैल्यू नहीं है, तो DEFAULT_TIMEOUT_IN_MILLIS का इस्तेमाल किया जाएगा.
रिटर्न
  • एक ऑब्जेक्ट, जिसकी get विधि कंटेनर को लौटाएगी, लेकिन जब तक कंटेनर उपलब्ध नहीं हो जाता, तब तक का टाइमआउटInMillis.

सार्वजनिक स्टैटिक अमान्य openContainer (TagManager tagManager, स्ट्रिंग tagManager, ContainerOpener.OpenType tagManager, Long tagManager, ContainerOpener.Notifier

कंटेनर के लोड होने में timeoutInMillis समय लग सकता है (यह डिफ़ॉल्ट या नया नहीं है) तय किए गए openType के हिसाब से).

अगर ओपन टाइप PREFER_NON_DEFAULT है, तो यह डिफ़ॉल्ट तौर पर सेट नहीं होता (इसे सेव किया गया है या यहां से वापस लिया गया है) नेटवर्क) कंटेनर लोड होता है और सूचक को भेज दिया जाता है. सूचना देने वाले को तुरंत कॉल किया जाता है इनमें से कोई एक स्थिति होती है:

  • सेव किया गया कंटेनर लोड होता है.
  • अगर कोई कंटेनर सेव नहीं किया गया है, तो नेटवर्क कंटेनर लोड होता है या नेटवर्क की गड़बड़ी होती है.
  • टाइमर का समय खत्म हो जाता है.

अगर नेटवर्क में कोई गड़बड़ी होती है या टाइमर की समयसीमा खत्म हो जाती है, तो कंटेनर को containerAvailable(Container) एक डिफ़ॉल्ट कंटेनर है.

अगर ओपन टाइप PREFER_FRESH है, तो नया (सेव किया गया या यहां से लिया गया) नेटवर्क) कंटेनर लोड होता है और सूचक को भेज दिया जाता है. सूचना देने वाले को तुरंत कॉल किया जाता है इनमें से कोई एक स्थिति होती है:

  • सेव किया गया एक नया कंटेनर लोड हो जाता है.
  • अगर कोई सेव किया गया कंटेनर नहीं है या सेव किया गया कंटेनर पुराना है, तो नेटवर्क कंटेनर लोड हो गया है या नेटवर्क की कोई गड़बड़ी होती है.
  • टाइमर का समय खत्म हो जाता है.

अगर नेटवर्क में कोई गड़बड़ी होती है या टाइमर की समयसीमा खत्म हो जाती है, तो कंटेनर को containerAvailable(Container) डिफ़ॉल्ट या पुराना सेव किया गया कंटेनर हो सकता है.

अगर आपने containerId पर, openContainer(TagManager, String, ContainerOpener.OpenType, Long) को दूसरी बार कॉल किया है, तो पिछले कॉल से लौटाया गया कंटेनर, सूचना देने वाली सुविधा में जल्द से जल्द भेज दिया जाएगा यह उपलब्ध है.

पैरामीटर
tagManager वह TagManager जिस पर OpenContainer को कॉल करना है
containerId लोड किए जाने वाले कंटेनर का आईडी
openType कंटेनर को खोलने का विकल्प
timeoutInMillis कंटेनर को लोड करने के लिए प्रतीक्षा करने के लिए मिलीसेकंड की अधिकतम संख्या (से सेव किए गए स्टोर और/या नेटवर्क पर. अगर कोई वैल्यू नहीं है, तो DEFAULT_TIMEOUT_IN_MILLIS का इस्तेमाल किया जाएगा.
नोटिफ़ायर एक नॉटिफ़ायर, जिसे कंटेनर उपलब्ध होने पर कॉल किया जाएगा. ऐसा होगा यह विकल्प सेव किए गए या नेटवर्क कंटेनर के साथ कॉल किया जाएगा, अगर यह उपलब्ध है और टाइम आउट से पहले लोड हो जाता है. ऐसा नहीं करने पर, इसे डिफ़ॉल्ट कंटेनर के साथ कॉल किया जाएगा. नोटिफ़ायर को यहां से कॉल किया जा सकता है: दूसरा थ्रेड.