বাংলায় অ্যান্ড্রয়েড সহায়িকা - Bangla Android Guide

দক্ষতার সাথে বিটম্যাপ প্রদর্শন

(http://developer.android.com/training/displaying-bitmaps/index.html)

শিখুন কীভাবে সাধারন কৌশল ব্যবহার করে Bitmap অবজেক্ট লোড এবং প্রক্রিয়াজাত করতে হয় যা আপনার ইন্টারফেসকে সংবেদনশীল (রেসপনসিভ) রাখা হয় এবং মেমরীর মাত্রাকে ছাড়িয়ে যাওয়াকে পরিহার করে। আপনি যদি সতর্ক না হোন, বিটম্যাপ আপনার বিদ্যমান মেমরী বাজেট খুব দ্রুত খরচ করে ফেলতে পারে যা ড্রেড এক্সেপশনের কারনে একটি অ্যাপলিকেশনকে ধ্বংস হওয়ার পথে নিয়ে যায:

java.lang.OutofMemoryError: bitmap size exceeds VM budget.

এখানে কিছু কারন আছে যেটা দেখায় আপনার অ্যান্ড্রয়েডে অ্যাপলিকেশনে বিটম্যাপ লোড করা কেন জটিল:

  • মোবাইল ডিভাইসের সাধারনভাবে দমিত সিস্টেম রিসোর্স আছে। অ্যান্ড্রয়েড ডিভাইসে একটি একক অ্যাপলিকেশনে ১৬ গই এর মতো ছোট মেমরী থাকতে পারে। Android Compatibility Definition Document (CDD), সেকশন ৩.৭. Virtual Machine Compatibility বিভিন্ন স্ক্রিন সাইজ এবং ঘনত্ব এর জন্য প্রয়োজনীয় ন্যুনতম অ্যাপলিকেশন মেমরী দেয়। অ্যাপলিকেশন এই ন্যুনতম মেমরী সীমার মধ্যে থেকে সম্পাদন করার মতো করে অপটিমাইজ করা উচিত। কিন্ত মনে রাখবেন অনেক ডিভাইস উচ্চ মাত্রায় কনফিগার করা হয়ে থাকে।

  • বিটম্যাপ অনেক মেমরী নিয়ে নেয়, বিশেষ করে ফটোগ্রফের মতো উচ্চ মাত্রার ইমেজের জন্য। উদাহরণস্বরূপ, Galaxy Nexus এ ক্যামেরা2592x1936 pixels (5 megapixels) পর্যন্ত ফটো নিয়ে থাকে। যদি বিটম্যাপ কনফিগারেশন ARGB 8888 ব্যবহার করে থাকে (অ্যান্ড্রয়েড ২.৩ ও আরও অগ্রসর থেকে ডিফল্ট) তখন মেমরীতে এই ইমেজ লোড করতে মেমরীর প্রায় ১৯ MB নেয় (259219364 bytes), কিছু ডিভাইসে প্রি-অ্যাপ লিমিট তাৎক্ষনিকভাবে বের করে দেয়।

  • অ্যান্ড্রয়েড অ্যাপ ইউজার ইন্টারফেস নিয়মিতভাবে একই সাথে কতিপয় বিটম্যাপের লোড হওয়ার আকাঙ্খা করে। কম্পোনেন্ট যেমন, ListView, GridView এবং ViewPager সাধারনভাবে একই সাথে বহুমুখি বিটম্যাপ অন-স্ক্রিনে অন্তর্ভূক্ত কওে, শুধু একটি আঙ্গুলের টোকায় সম্ভাবনাময় অনেক অফ-স্ক্রিন প্রদর্শন হওয়ার জন্য প্রস্তুত আছে।