यदि आपको बड़ी मात्रा में मेमोरी का उपयोग करना चाहिए (और बनाए रखना चाहिए ), तो हां, आप कर सकते हैं और उपयोग करना चाहिए android:largeHeap="true"
। लेकिन अगर आप इसका उपयोग करते हैं, तो आपको अपने ऐप को मेमोरी से फ्लश करने के लिए तैयार रहना चाहिए जब भी अन्य ऐप अग्रभूमि में हों।
"तैयार रहें," मेरा मतलब है कि आपको उस संभावना के लिए डिज़ाइन करना चाहिए, ताकि आपकी onStop()
औरonResume()
तरीकों को यथासंभव कुशलता से लिखा जाए, यह सुनिश्चित करते हुए कि सभी प्रासंगिक स्थिति को बचाया जाता है और इस तरह से बहाल किया जाता है जो उपयोगकर्ता के लिए एक सहज उपस्थिति प्रस्तुत करता है।
वहाँ तीन तरीकों कि इस पैरामीटर से संबंधित हैं: maxMemory()
,getMemoryClass()
, और getLargeMemoryClass()
।
अधिकांश उपकरणों के लिए, maxMemory()
एक समान मूल्य का प्रतिनिधित्व करेगाgetMemoryClass()
डिफ़ॉल्ट रूप , हालांकि बाद के मेगाबाइट में व्यक्त किया गया है, जबकि पूर्व बाइट्स में व्यक्त किया गया है।
जब आप largeHeap
पैरामीटर का उपयोग करते हैं,maxMemory()
तो डिवाइस-विशिष्ट उच्च स्तर तक बढ़ा दिया getMemoryClass()
जाएगा , जबकि यह समान रहेगा।
getMemoryClass()
आपके ढेर के आकार को बाधित नहीं करता है, लेकिन यह आपको बताता है कि यदि आप अपने ऐप को उस विशेष डिवाइस की सीमा के भीतर आराम से और मज़बूती से काम करना चाहते हैं जिस पर आप चल रहे हैं, तो आपको कितनी मात्रा में उपयोग करना चाहिए ।
maxMemory()
, इसके विपरीत, आपके ढेर के आकार को बाधित करता है , और इसलिए आप इसके मूल्य को बढ़ाने के माध्यम से अतिरिक्त ढेर तक पहुंच प्राप्त करते हैं, और largeHeap
उस मूल्य को बढ़ाते हैं। हालाँकि, हीप की बढ़ी हुई मात्रा अभी भी सीमित है, और यह सीमा डिवाइस-विशिष्ट होगी, जिसका अर्थ है कि आपके ऐप के लिए उपलब्ध हीप की मात्रा उस डिवाइस के संसाधनों के आधार पर भिन्न होगी, जिस पर आपका ऐप चल रहा है। तो, का उपयोग largeHeap
करना आपके ऐप के लिए सभी सावधानी बरतने का निमंत्रण नहीं है और ऑल-यू-टू-ईट बुफे के माध्यम से अपने रास्ते से हटना है।
आपका ऐप वास्तव में यह पता लगा सकता है कि किसी विशेष डिवाइस पर largeHeap
पैरामीटर का उपयोग करके पैरामीटर को मेमोरी के माध्यम से कितना मेमोरी उपलब्ध कराया जाएगाgetLargeMemoryClass()
। लौटाया गया मान मेगाबाइट में है।
इस पहले की पोस्ट में की चर्चा शामिल है largeHeap
पैरामीटर , साथ ही कई विशिष्ट एंड्रॉइड डिवाइसों पर इसके उपयोग के बिना और उसके उपयोग के बिना ढेर की कितनी मात्रा में उपलब्ध कराया गया है, इसके कई उदाहरण हैं:
Android में एप्लिकेशन हीप आकार का पता लगाएं
मैंने इस पैरामीटर के साथ अपना कोई भी ऐप सही पर सेट नहीं किया है। हालाँकि, ऑप्टिमाइज़-संबंधित मापदंडों के सेट को संकलित करने के लिए मेरे एक ऐप में कुछ मेमोरी-इंटेंसिव कोड है, जो केवल विकास के दौरान चलता है। मैं largeHeap
इस कोड को चलाते समय मेमोरी त्रुटियों से बचने के लिए, केवल विकास के दौरान पैरामीटर जोड़ता हूं । लेकिन मैं एप्लिकेशन को लागू करने से पहले पैरामीटर (और कोड) को हटा देता हूं।