2012-05-17 6 views
10

ऐसा तब होता है जब ऐप स्प्लैश स्क्रीन से मुख्य पृष्ठ तक लोड होता है। यह सिम्युलेटर पर न केवल डिवाइस पर होता है:एंड्रॉइड - बढ़ोतरी ढेर (फ्रैग केस) - बाइट आवंटन .. किसी भी बिटमैप्स लोड नहीं हो रहा है

05-17 08:10:16.627: I/dalvikvm-heap(14021): Grow heap (frag case) to 20.580MB for  2424256-byte allocation 
05-17 08:10:16.666: D/dalvikvm(14021): GC_FOR_ALLOC freed 1K, 3% free 21000K/21511K, paused 21ms 
05-17 08:10:16.697: D/dalvikvm(14021): GC_CONCURRENT freed 116K, 3% free 20885K/21511K, paused 2ms+2ms 
05-17 08:10:16.720: D/dalvikvm(14021): GC_FOR_ALLOC freed 44K, 4% free 20841K/21511K, paused 10ms 
05-17 08:10:16.728: I/dalvikvm-heap(14021): Grow heap (frag case) to 24.533MB for 4310896-byte allocation 

मैं Ecplise मेट इस्तेमाल किया - बाइट आवंटन का समाधान - Android.Graphics.Bitmap $ प्रीलोडेड छवियों ...

उपकरण मैं उपयोग कर रहा हूँ गूगल नेक्सस है प्राइम, एंड्रॉइड 4.0

क्या किसी को भी इसका सामना करना पड़ा है?

+0

बिटमैप आप लोड कर रहे हैं के आकार क्या है? –

उत्तर

10

आप शायद एक बहुत बड़ा Bitmap जो एक OutOfMemory अपवाद में परिणाम को डिकोड करने की कोशिश कर रहे किसी ने कुछ विशेषज्ञता .... फेंक कर सकते हैं। इसका मतलब यह है कि आप जिस ऑपरेशन को हासिल करने की कोशिश कर रहे हैं वह आपके डिवाइस पर प्रत्येक एप्लिकेशन के लिए वीएम बजट से अधिक है, ढेर मेमोरी खपत के मामले में (जो आपके डिवाइस पर 24 एमबी प्रतीत होता है, शायद आपके एमुलेटर पर अधिक है, यही कारण है कि यह नहीं करता है वहाँ नहीं होगा!)।

उदाहरण के लिए दो का एक पहलू से अपने Bitmap नमूने के लिए प्रयास करें:

BitmapFactory.Options o = new BitmapFactory.Options(); 
o.inSampleSize = 2; 
Bitmap b = BitmapFactory.decodeFile(pathToBitmap, o); 
+0

decodeFile() में "फ़ाइल" का अर्थ क्या है। –

+1

@AmitJayaswal इसे इंगित करने के लिए धन्यवाद, मैंने संपादित किया है। यह एक स्ट्रिंग है जो फ़ाइल को डीकोड करने के पथ का प्रतिनिधित्व करती है। –

14

मैं एक ही समस्या आ रही है और यह करने के लिए एक समाधान मिल गया है।

क्या आप संसाधन से अपने बिटमैप्स लोड कर रहे हैं? यदि ऐसा है तो उन्हें "खींचने योग्य" या "drawable-mdpi" में रखने के बजाय उन्हें समान ड्रॉइंग फ़ोल्डरों में रखने का प्रयास करें।

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

यदि आपके पास केवल आपके संसाधनों के लिए 1 आकार है, तो उन्हें ड्रायबल-नोडपी में रखें और इसका उपयोग इस प्रकार किया जाएगा। हालांकि आपके कुछ लेआउट इस से प्रभावित हो सकते हैं, इसलिए मैंने कुछ छवियों को खींचने योग्य फ़ोल्डर (जैसे बटन इमेज इत्यादि) में रखा और पृष्ठभूमि और अन्य बड़े संसाधनों को आकर्षित करने योग्य-नोडपी में स्थानांतरित कर दिया।

आशा इस मदद करता है;)

+0

मैं अपनी सभी छवियों को drawable-hdpi फ़ोल्डर में रख रहा हूं। लेकिन मेरे पास ड्रॉइंग फ़ोल्डर में एक और एक्सएमएल फाइल है जो बटन के लिए राज्य चेंजिंग स्टाइल के लिए है। उन एक्सएमएल फाइलों में छवियां हैं ... क्या यह चिंता का कारण होगा? – Ashwin

+0

@ अश्विन को ड्रॉबल फ़ाइल में एक्सएमएल फाइलें रखने का कोई मुद्दा नहीं होना चाहिए। hdpi फ़ोल्डर में बिटकमैप कितने बड़े हैं? मेरा सुझाव है कि आप उन्हें xhdpi या no-dpi में डालने का प्रयास करें और देखें कि आपको एक ही तरह की त्रुटि मिलती है या नहीं। – hjm

+0

मैंने छवि को सुझाए गए फ़ोल्डर्स में बदल दिया लेकिन कोई प्रभाव नहीं पड़ा। और मेरे पास सभी छवियां पीएनजी प्रारूप में हैं, मेरे पास पूरे एप्लिकेशन में सबसे बड़ी छवि केवल 77 केबी है। यह समझ में नहीं आता है क्योंकि यह प्रारंभिक लॉन्च के दौरान 24 एमबी आवंटित कर रहा है। – Ashwin

संबंधित मुद्दे