2010-01-25 5 views
36

एंड्रॉइड विकास में निर्भरता इंजेक्शन कंटेनर का उपयोग करने के बारे में कुछ जानकारी के लिए, मैं व्यर्थ में देख रहा हूं। विशेष रूप से, Activity के निर्माण को इस तरह से ओवरराइड करने के लिए कैसे किया जाता है जो मारने से वापस आने पर भी काम करेगा (किसी भी कारण से)।एंड्रॉइड और निर्भरता इंजेक्शन

क्या किसी को इस क्षेत्र में कोई अनुभव मिला है?

+0

आप http://code.google.com/p/roboguice roboguice का उपयोग कर खत्म करते हैं, तो मैं खुशी होगी आपकी प्रतिक्रिया के लिए। मैं आपको Google समूह में शामिल होने के लिए प्रोत्साहित करता हूं और हमें बताता हूं कि आपका अनुभव कैसा है। – emmby

उत्तर

25

ऐसा प्रतीत होता है कि आप Android के साथ Google Guice 2.0 का उपयोग कर सकते हैं। आप roboguice में भी देख सकते हैं।

संपादित करें: Roboguice अब पदावनत किया गया है:

स्प्रिंग also now available for Android

संपादित है। आप टूथपिक के पीछे डेवलपर द्वारा टिप्पणियों में उल्लिखित Toothpick का प्रयास कर सकते हैं।

+0

धन्यवाद, ऐसा लगता है कि रोबोगुइस सबसे नज़दीक है जिसे मैं प्राप्त करने जा रहा हूं। यह विरासत ('GuiceActivity') का उपयोग करता है और' setContentView' पर इंजेक्शन करता है, लेकिन 'गतिविधि' निर्माण कॉलस्टैक को देखने के बाद मैं देख सकता हूं कि कोई अन्य तरीका नहीं है। –

+0

रिचर्ड, रोबोगुइस अब दो चरणों में इंजेक्शन करता है। एक बार इंजेक्शन के दौरान क्रिएट के दौरान, और एक बार इंजेक्शन देखने के लिए setContentView के दौरान देखें। – emmby

+1

RoboGuice, अब बहिष्कृत है, आपको टूथपिक पर आज़माएं, उनके पास लगभग एक ही एपीआई है। https://github.com/stephanenicolas/toothpick – Snicolas

3

आप Spring ME पर भी विचार करना चाहेंगे। हालांकि मूल रूप से जावा एमई के लिए इरादा है, मैंने एंड्रॉइड के लिए इसका उपयोग करने वाले लोगों की रिपोर्ट देखी है। लाभ यह होगा कि आपके पास दंड के बिना एक परिचित प्रोग्रामिंग मॉडल (वसंत) है: स्प्रिंग एमई के पास 0k पदचिह्न है।

+0

स्प्रिंग एमई कोड जनरेशन पर निर्भर करता है। क्या आपको बिल्ड प्रक्रिया के साथ इसे एकीकृत करने के लिए कोई संसाधन मिला है। उदाहरण के लिए यह ग्रहण के भीतर से एंड्रॉइड ऐप के रूप में चलाने की मेरी क्षमता में हस्तक्षेप नहीं कर सकता है। और चींटी निर्माण प्रक्रिया को भी इसका समर्थन करने के लिए संशोधित करने की आवश्यकता होगी। –

+0

हाय मार्क, मुझे पूरा यकीन नहीं है कि आप क्या कह रहे हैं। हमने विकास (समापन, सत्यापन, इत्यादि) का समर्थन करने के लिए स्प्रिंग आईडीई एक्सटेंशन का उपयोग किया। मैं देख सकता हूं कि यदि आप चींटी का उपयोग कर रहे हैं, तो चीजें थोड़ा और जटिल हो सकती हैं। मदद की ज़रूरत पड़ने पर मुझे बतायें। हम इसके बारे में बात कर सकते थे। (जीमेल डॉट कॉम पर wilfred डॉट springer) –

+0

इसे अब कोशिश करने के लिए इसे खोजने का प्रयास कर रहा है और मैं बहुत ज्यादा नहीं आ रहा हूं। क्या यह अभी भी सक्रिय रूप से विकसित किया जा रहा है? –

0

Android के लिए एक नई स्प्रिंग प्रोजेक्ट भी है: Tiny Spring। यह एक्सएमएल कॉन्फ़िगरेशन की मूलभूत बातें हल करता है लेकिन स्प्रिंग करता है जो सब कुछ नहीं करता है।

+1

एंड्रॉइड के लिए वसंत एंड्रॉइड के लिए आईओसी का समर्थन नहीं करता है, सुरक्षित एपीआई एक्सेस करने के लिए बस एक रेस्ट क्लाइंट और ऑथ समर्थन प्रदान करें। –

13

सबसे उपयुक्त एंड्रॉइड निर्भरता इंजेक्शन लाइब्रेरी Dagger by Square है। स्प्रिंग और गुइस दोनों जावा अनुप्रयोगों के लिए डिज़ाइन किए गए हैं, एंड्रॉइड नहीं। यदि आपकी एकमात्र आवश्यकता सरल निर्भरता प्रबंधन है, तो डैगर सबसे अच्छा विकल्प है और इसमें JSR-330 समर्थन है।

1

आप अन्य परियोजनाओं में वसंत का उपयोग करने के लिए उपयोग किया जाता है, तो आप एंड्रॉयड के लिए स्प्रिंग (यह प्रमाणीकरण समर्थन के साथ केवल एक बाकी पुस्तकालय है), स्प्रिंग ME (पूरी तरह से अलग कार्यप्रवाह और कम featureset साथ बहुत खुश नहीं होगा) या छोटे वसंत (उदाहरण के लिए केवल वसंत- कॉन्फ़िगरेशन की तरह)।

हालांकि आप मेरी परियोजना RoboSpring को आज़मा सकते हैं। विवरण से:

RoboSpring एंड्रॉइड मंच पर स्प्रिंग फ्रेमवर्क का एक (असली) बंदरगाह है। इसके अतिरिक्त यह RoboGuice द्वारा पेश की गई कार्यक्षमता के लिए प्रारंभिक समर्थन प्रदान करता है जैसे गतिविधियां और अधिक में संदर्भ संदर्भ इंजेक्शन। RoboSpring स्प्रिंग के कोर, सेम, संदर्भ और एओपी घटकों के संस्करण 3.1.0 रिलीज पर आधारित है।

  • एक स्प्रिंग विन्यास फाइल (XML) के साथ कॉन्फ़िगर एप्लिकेशन घटकों
  • Autowire अपने स्प्रिंग आवेदन संदर्भ से सेम के साथ एंड्रॉयड घटकों: यह निम्नलिखित कार्यक्षमता प्रदान करता है।
  • अपने वसंत बीन्स में एंड्रॉइड एप्लिकेशन संदर्भ इंजेक्ट करें।
  • क्रियाकलापों में विचारों को इंजेक्ट करें।
  • ... और अधिक

https://github.com/dthommes/RoboSpring