मुझे एंड्रॉइड में कच्चे संसाधनों के विपरीत संपत्ति का उपयोग कब करना चाहिए?


151

मैं अपने एंड्रॉइड अध्ययनों के बीच में हूं, और मैंने सिर्फ एसेट्स और रॉ संसाधनों को कवर किया है। मैं कच्चे संसाधनों बनाम एसेट्स का उपयोग करने के कारण को समझने की कोशिश कर रहा हूं।

  1. वे दोनों एक अप्रयुक्त संसाधन इनपुट स्ट्रीम प्रदान करते हैं।

  2. ऐसा लगता है कि संपत्ति कच्चे संसाधनों की तुलना में बहुत अधिक लचीलापन और कार्यक्षमता प्रदान करती है।

    ए। आप के तहत फ़ोल्डर संरचना बना सकते हैं, assetsलेकिन नीचे नहींraw

    ख। आप सभी संसाधनों को गतिशील रूप से assetsफ़ोल्डर में सूचीबद्ध कर सकते हैं लेकिन फ़ोल्डर में नहीं raw

तो, मैं Android में कच्चे संसाधनों का उपयोग क्यों करूंगा?


जवाबों:


182

rawफ़ोल्डर और फ़ोल्डर के बीच मुख्य अंतर assets

  • चूंकि कच्चा संसाधन (रेस) का एक सबफ़ोल्डर है, एंड्रॉइड स्वचालित रूप से IDइसके अंदर स्थित किसी भी फ़ाइल के लिए उत्पन्न करेगा । यह IDतब इसमें संग्रहीत किया जाता है जो R classएक फ़ाइल के संदर्भ के रूप में कार्य करेगा, जिसका अर्थ है कि इसे आसानी से अन्य एंड्रॉइड कक्षाओं और विधियों और यहां तक ​​कि एंड्रॉइड एक्सएमएल फाइलों से भी एक्सेस किया जा सकता है। स्वचालित रूप से उत्पन्न आईडी का उपयोग करना एंड्रॉइड में एक फ़ाइल तक पहुंच का सबसे तेज़ तरीका है।

  • assetsफ़ोल्डर एक है "परिशिष्ट" निर्देशिका। आर वर्ग आईडी जेनरेट नहीं करता है वहाँ रखा फ़ाइलें, जो कुछ Android वर्गों और तरीकों के साथ कम संगत है के लिए। assetsफ़ोल्डर में फ़ाइल का उपयोग धीमा है क्योंकि आपको स्ट्रिंग के आधार पर इसे संभालना होगा । हालाँकि कुछ ऑपरेशन अधिक आसानी से इस फ़ोल्डर में फाइल रखकर किए जाते हैं, जैसे सिस्टम की मेमोरी में डेटाबेस फाइल कॉपी करना। एसेट्स फ़ोल्डर के अंदर फ़ाइलों के लिए एक Android XML संदर्भ बनाने का कोई आसान (आसान) तरीका नहीं है।


4
@ user370305 हाय, क्या अब भी नए Android OS के लिए 1MB सीमा है? मुझे इस बारे में बात करने वाला कोई दस्तावेज नहीं मिला। क्या आपके पास कोई विचार है जो मुझे मिल सकता है?
GMsoF

6
@GMsoF - इसके लिए कोई विशिष्ट दस्तावेज नहीं है। लेकिन मेरे पास आपके लिए कुछ उपयोगी लिंक हैं। 1. blog.rossgreenhalf.com/2010/12/13/android-file-size-limits 2. stackoverflow.com/questions/11276112/... 3. stackoverflow.com/questions/6809651/... 4. elinux.org/Android_aapt और 5. android-developers.blogspot.in/2012/03/… बस sr no के अनुसार गुजरें।
user370305

2
@GMsoF - /assetनिर्देशिका में फ़ाइल का आकार 1 mb से बड़ा करने के लिए कई तरकीबें हैं ।
user370305

10
मैं संपत्ति फ़ोल्डर के लिए फ़ाइल आकार का प्रतिबंध कभी नहीं था। क्या आपको यकीन है कि ऐसी कोई बात है?
एंड्रॉयड डेवलपर

2
हां, Android 2.2 या 2.3 से पहले, 1 एमबी से अधिक के असम्पीडित आकार वाली किसी भी संपीड़ित फ़ाइल को एपीके से नहीं पढ़ा जा सकता है। जो यहाँ उल्लेख किया है groups.google.com/forum/#!topic/android-developers/lguGFJD-JRs
user370305

33

से Android दस्तावेज़ , raw/निर्देशिका के लिए प्रयोग किया जाता है:

अपने कच्चे रूप में सहेजने के लिए मनमानी फाइलें। एक कच्चे InputStream के साथ इन संसाधनों को खोलने के लिए , संसाधन ID के साथ Resources.openRawResource () पर कॉल करें , जो R.raw.filename है

हालाँकि, यदि आपको मूल फ़ाइल नामों और फ़ाइल पदानुक्रम तक पहुँच की आवश्यकता है, तो आप assets/निर्देशिका में कुछ संसाधनों को सहेजने पर विचार कर सकते हैं (बजाय res / raw /)संपत्ति में फाइलें / एक संसाधन आईडी नहीं दी जाती हैं, इसलिए आप उन्हें केवल एसेटमैन का उपयोग करके पढ़ सकते हैं ।


एक पंक्ति में, raw/निर्देशिका में फ़ाइलें प्लेटफ़ॉर्म द्वारा संकलित नहीं की जाती हैं , उन्हें एक संसाधन आईडी दी जाती है और उन्हें उप-फ़ोल्डरों में समूहीकृत नहीं किया जा सकता है जबकि यदि आप चाहते हैं कि अन्यथा assets/निर्देशिका का उपयोग करें ।


1
यदि आप एक बड़ी फ़ाइल को स्टोरेज फ़ोल्डर में कॉपी करना चाहते हैं तो क्या कच्ची फाइलें सबसे अच्छा विकल्प हैं?
लाइव-प्यार

@ 40-लव एंड्रॉइड 2.3 और इसके बाद के संस्करण के लिए फ़ाइल आकार पर कोई प्रतिबंध नहीं है जब तक कि आप पहले के संस्करणों का समर्थन नहीं कर रहे हैं। आप अपनी आवश्यकता के आधार पर किसी भी भंडारण फ़ोल्डर का चयन कर सकते हैं। एक प्रमुख अंतर है जिस तरह से ये फाइलें एक्सेस की जाती हैं।
प्रिंस

1

ऊपर दिए गए उत्तरों को जोड़कर ...

/ Res / स्ट्रिंग्स, / Res / लेआउट, / Res / xml फ़ाइलें आदि सभी बाइनरी प्रारूप में संकलित हो जाते हैं। लेकिन अगर आप इसके बजाय / Res / कच्चे / निर्देशिका में XML फ़ाइलों सहित फ़ाइलों को रखते हैं, तो वे बाइनरी प्रारूप में संकलित नहीं होते हैं।

कच्चे संसाधनों से अधिक संपत्ति का उपयोग करने का एक बड़ा फायदा file:///android_asset/ उरी उपसर्ग है। यह एक परिसंपत्ति को वेब व्यू में लोड करने के लिए उपयोगी है। उदाहरण के लिए, अपनी परियोजना के भीतर परिसंपत्तियों / foo / index.html में स्थित संपत्ति तक पहुँचने के लिए, आप loadUrl("file:///android_asset/foo/index.html")उस HTML को WebView में लोड करना कह सकते हैं ।


आप file:///android_res/कच्चे संसाधन को इंगित करने के लिए उपसर्ग का उपयोग कर सकते हैं ।
androidguy
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.