के बीच किया जाता है, मुझे आश्चर्य है कि क्या कुछ एंड्रॉइड क्रियाकलापों और एंड्रॉइड सेवा के बीच सिंगलटन बनाने का बुरा विचार होगा। जहां तक मैं स्थिर क्षेत्रों को जानता हूं, मेरे मामले में सिंगलटन, तब तक उपलब्ध है जब तक पूरी प्रक्रिया जीवित न हो।एंड्रॉइड: सिंगलटन जिसका उपयोग गतिविधि और सेवा
मेरी योजना मेरी गतिविधियों और पृष्ठभूमि सेवा के बीच डेटा साझा करने के लिए पार्ससेल के बजाय सिंगलटन का उपयोग करना है। तो मेरी गतिविधि 1 MySingleton.getInstance() को जोड़कर कुछ डेटा जोड़ देगा। AddData (foo); तो मैं अपनी सेवा को सूचित करने के लिए एक इरादा भेजूंगा कि सिंगलटन में नया डेटा जोड़ा गया है। इसके बाद मेरी पृष्ठभूमि सेवा इरादे को संभालेगी और MySingleton.getInstance() को कॉल करेगी। GetLatestData(); तो यह डेटा को संसाधित करेगा (कुछ समय लगता है)। सेवा का नतीजा सिंगलटन का उपयोग करके "पोस्ट" वापस होगा और एक प्रसारण इरादा को आग लगा देगा, जिसे गतिविधि 1 (यदि जीवित) द्वारा संभाला जाता है और गतिविधि 1 सिंगलटन से परिणाम पुनर्प्राप्त करेगा।
क्या आप लोग सोचते हैं कि यह एक बुरा विचार है?
संपादित करें: मैं जो कार्यान्वित करना चाहता हूं वह एक सॉफ्टवेयर की शांति है जो वेब सर्वर से डेटा डाउनलोड करता है और परिणाम देता है। तो मेरी गतिविधि DownloadJob ऑब्जेक्ट बनायेगी। DownloadJob-Object को DownloadScheduler (सिंगलटन) में रखा जाएगा जो सभी डाउनलोड जॉब्स को कतार और प्रबंधित करता है। DownloadScheduler एक ही समय में 5 DownloadJobs चलाने की अनुमति देगा और प्रतीक्षा को संग्रहीत करने के लिए कतार का उपयोग करेगा। प्रभावी डाउनलोड डाउनलोड सेवा (IntentService) द्वारा किया जाएगा, जो इस इरादे से सूचित हो जाता है कि अभी एक नया डाउनलोडजोब अब निष्पादित (डाउनलोड किया जाना चाहिए)। DowanlodService DownloadSchedulers कतार (PriorityBlockingQueue) से अगली नौकरी पुनर्प्राप्त करेगा और DownloadJob.setResult (...) को सेट करके परिणाम लौटाएगा और एक प्रसारण उद्देश्य को सक्रिय करेगा, परिणाम तैयार है, जो डाउनलोडशेड्यूलर द्वारा प्राप्त किया जाएगा जो होगा कतार से नौकरी हटाएं और गतिविधि को पूरा करें कि डाउनलोड पूर्ण हो गया है।
तो मेरे परिदृश्य में मैं डाउनलोड जॉब्स को डाउनलोड जॉब्स को डाउनलोडजोब पार्ससेलबल बनाने और इसे इरादे से पास करने के बजाय डाउनलोड सेवा से एक्सेस करने के लिए उपयोग करता हूं। तो मैं समस्या से बचूंगा, कि मेरे पास स्मृति में दो डाउनलोड जॉब्स हैं (एक "गतिविधि साइट" पर और एक "सेवा साइट" पर)।
कोई सुझाव यह बेहतर कैसे हल करें?
क्या यह सच है कि स्थिर उदाहरण, जैसे डाउनलोडशेड्यूलर (सिंगलटन), एंड्रॉइड सिस्टम द्वारा कम स्मृति पर मुक्त किया जाएगा? तो आवेदन को उपclassing होगा और इस समस्या से बचने के संदर्भ (गैर स्थैतिक) वहाँ पकड़ लेंगे?
हां, यह एक बुरा विचार है, एंड्रॉइड में आपकी प्रक्रिया किसी भी समय मर सकती है, अपने डेटा को कुछ लगातार स्टोर में रखें और उसके बाद एक सामग्री प्रदाता को एक इंटरफ़ेस के रूप में लिखें। –
मैं लगातार डेटा स्टोर करने के लिए नेट नहीं है। मुझे बस कुछ प्रकार की कतार की आवश्यकता है जहां एक्टिविटीज ने कुछ ऑब्जेक्ट्स रखे हैं, सेवा उन्हें पुनर्प्राप्त करती है और कुछ काम करती है और फिर परिणाम लौटाती है ... – sockeqwe