कंटेनर खोलने के लिए हेल्पर क्लास.
यह 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
कंटेनर का अनुरोध करने के लिए, मिलीसेकंड में डिफ़ॉल्ट टाइम आउट.
सार्वजनिक तरीके
सार्वजनिक स्टैटिक 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 का इस्तेमाल किया जाएगा. |
| नोटिफ़ायर | एक नॉटिफ़ायर, जिसे कंटेनर उपलब्ध होने पर कॉल किया जाएगा. ऐसा होगा यह विकल्प सेव किए गए या नेटवर्क कंटेनर के साथ कॉल किया जाएगा, अगर यह उपलब्ध है और टाइम आउट से पहले लोड हो जाता है. ऐसा नहीं करने पर, इसे डिफ़ॉल्ट कंटेनर के साथ कॉल किया जाएगा. नोटिफ़ायर को यहां से कॉल किया जा सकता है: दूसरा थ्रेड. |