मेरे एंड्रॉइड एप्लिकेशन में आवश्यकताएं सर्वर से छवियों को लाने और उन्हें ढेर स्मृति में कैश करने की आवश्यकता है।बेस 64String में एक एकल वर्ण कितने बाइट रखता है? 1, 2 या अधिक
अनुरोध प्राप्त करने पर, सर्वर पहले byte[]
को Base64String
में एन्कोड करता है और उस स्ट्रिंग को देता है। और, ImageView
में इसे प्रस्तुत करने के समय एंड्रॉइड एप्लिकेशन Base64String
को byte[]
पर डीकोड करता है, Bitmap
बनाता है, और इसे ImageView
पर रखता है।
चूंकि सब कुछ कैश में है, तो कुछ बिंदु पर स्मृति से बाहर निकलने के लिए आवेदन की संभावना है, और गंभीर रूप से दुर्घटनाग्रस्त हो जाता है।
स्मृति स्थिति से बाहर निकलने के लिए, मैंने अपने आवेदन में सुरक्षा क्वांटम (उदा। 5 एमबी) परिभाषित किया है। यदि किसी भी समय उपलब्ध स्मृति सुरक्षा क्वांटम पर नीचे जाती है, तो उपयोगकर्ता को कुछ छवियों को चिह्नित करने की आवश्यकता होगी क्योंकि उम्मीदवारों को हटाया जाना चाहिए। साथ ही, एप्लिकेशन अनुमानित मेमोरी दिखाएगा जब चयनित आइटम साफ़ हो जाएंगे।
Bitmap
को उपयोगकर्ता छवि से दूर जाने के बाद पुनर्नवीनीकरण किया गया है, इसलिए Bitmap
प्रभावी रूप से तब तक कोई स्मृति नहीं रख रहा है जब तक हम दूर हैं।
एक विशेष परीक्षण में, मैं 55 छवियां डाउनलोड करता हूं, और मेरा ढेर 16 MB
से 42 MB
तक बढ़ता है। इसका मतलब है, 55 छवियां 26 MB
पर कब्जा करती हैं। जब मैं उन सभी को साफ़ करता हूं, तो ढेर 16 MB
पर वापस आ जाता है।
लेकिन, जब मैं Base64String
की संचयी राशि लेता हूं तो यह 11983840
पर आता है। और अगर मैं एक चरित्र पर विचार 1 byte
रूप 11983840 bytes
11.4 MB
समस्या है बनाता है, Base64String
की लंबाई के संचयी योग केवल उपाय मेरे पास उपलब्ध, उपयोगकर्ता कितना स्मृति अपने चयन के द्वारा जारी किया जा सकता जाने के लिए मदद करता है ।
मैंने निम्नलिखित प्रश्न भी पढ़े हैं, जो कि Base64String
के प्रत्येक 3 Bytes
के लिए 4 Characters
होगा।
सवाल यह है कि, Base64String
में एक भी चरित्र कितने बाइट्स रखती है? 1, 2 या अधिक
तो 1 character
1 byte
, है और अपने परीक्षण में ढेर बढ़ता है और 26 एमबी से सिकुड़ता है। फिर Base64String
की लंबाई का संचयी योग केवल 11.4 MB है?
इसका मतलब यह है चरित्र प्रति 1 Byte
अपडेट किया गया।
यहाँ डिफ़ॉल्ट CharacterSet UTF-8
इस लिंक का उल्लेख http://stackoverflow.com/questions/13378815/बेस 64-लंबाई-गणना? Lq = 1 –
मैंने पहले से ही लिंक का उल्लेख किया है और इसलिए इसे मेरे प्रश्न के हिस्से के रूप में भी रखा है। लिंक में समस्या और यह काफी अलग हैं। –