कंटेनर खोलने के लिए हेल्पर क्लास.
यह 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, लॉन्ग timeoutInMillis)
|
स्टैटिक शून्य |
openContainer(TagManager tagManager, स्ट्रिंग containerId, ContainerOpener.OpenType openType, लॉन्ग timeoutInMillis, ContainerOpener.Notifier नोटिफ़ायर)
|
स्थिरांक
सार्वजनिक स्टैटिक फ़ाइनल लंबी DEFAULT_TIMEOUT_IN_MILLIS
कंटेनर का अनुरोध करने के लिए, मिलीसेकंड में डिफ़ॉल्ट टाइम आउट.
सार्वजनिक तरीके
ContainerOpener.ContainerFuture openContainerTagManagertagManagerContainerOpener.OpenType
कंटेनर के लोड होने के लिए, 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 तरीका कंटेनर लौटाएगा, लेकिन जब तक कंटेनर उपलब्ध नहीं हो जाता, तब तक वह TimeInMillis तक ब्लॉक कर सकता है.
सार्वजनिक स्टैटिक शून्य openContainer (TagManager tagManager, स्ट्रिंग tagManager, ContainerOpener.OpenType tagManagertagManagertagManagertagManagerContainerOpener.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 का इस्तेमाल किया जाएगा. |
नोटिफ़ायर | एक नोटिफ़ायर, जिसे कंटेनर उपलब्ध होने पर कॉल किया जाएगा. उपलब्ध होने और टाइम आउट से पहले लोड होने पर, इसे सेव किए गए या नेटवर्क कंटेनर के साथ कॉल किया जाएगा. ऐसा न होने पर, इसे डिफ़ॉल्ट कंटेनर के साथ कॉल किया जाएगा. नोटिफ़ायर को किसी दूसरे थ्रेड से कॉल किया जा सकता है. |