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

অল্প অল্প কিন্তু বারবার করুন

আপনার ভিউকে গতিশীল করতে, রুটিন থেকে অপ্রয়োজনীয় কোড পরিত্যাগ করুন যাকে ফ্রিকুয়েন্টলি (ঘণ ঘণ) বলে। এ কাজ করার মাধ্যমে শুরু করুন, যা আপনাকে বড় প্লেব্যাক দিবে। নির্দিষ্টভাবে আপনাকে onDraw() এ এলোকেশন (বরাদ্দ) পরিহার করা উচিত, কারন এলোকেশন একটি গারবেজ কালেকশনের দিকে নিয়ে যেতে পারে যা একটি দ্বিধার কারন হয়। আরম্ভের সময় অথবা অ্যাানমেশনের মধ্যে অবজেক্ট এলোকেট করুন। যখন একটি অ্যানিমেশন রান করছে এমন অবস্থায় কখনই একটি এলোকেশন করবেন না।

অধিকন্তু onDraw()লিনিয়ার তৈরী করতে, আপনাকে এটাও নিশ্চিত করতে হেব যে যতবার সম্ভব এটাকে কল করা। onDraw() এ করা অধিকাংশ কল invalidate()এ করা কলের ফলাফল, সুতরাং invalidate()এ অপ্রয়োজনীয় কল পরিত্যাগ করুন। যখন সম্ভব, যে সংস্করন যা কোন প্যারামিটার নেয় না সেটাকে কল করার চেয়ে invalidate()‘র ফোর-প্যারামিটার ভ্যারিয়েন্ট কল করুন। নো-প্যারামিটার ভেরিয়েন্ট সম্পূর্ণ ভিউকে নিস্ক্রিয় করে, যেখানে ফোর-প্যারামিটার ভেরিয়েন্ট শুধুমাত্র ভিউয়ের একটি নির্দিষ্ট অংশ নিস্ক্রিয় করে। এই পদ্ধতি ড্র কলকে আরও কার্যকরী হতে দেয় এবং ভিউয়ের অপ্রয়োজনীয় ইনভেলিডেশন পরিহার করতে পারে যা ইনভ্যালিড রেকট্যাঙ্গেলের বাইরে পড়ে।

আরেকটি ব্যয়সাপেক্ষ অপারেশন হচ্ছে লেআউট ট্রাভার্স করা। যে কোন সময় একটি ভিউ requestLayout()কল করে, অ্যান্ড্রয়েড ইউআই সিস্টেমের সম্পূর্ণ ভিউ হায়ারারকি ট্রাভার্স করা প্রয়োজন যা খুজে বের করে প্রতিটা ভিউয়ের কতটা বড় হওয়া উচিত। যদি এটা দ্বান্দিক পরিমাপ বের করে, এটার কয়েকবার হায়ারারকিকে ট্রাভার্স করা প্রয়োজন। ইউআই ডিজাইনার মাঝে মাঝে ইউআইকে সটিক আচরন করা মতো করে পেতে ViewGroup অবজেক্টের মধ্যে থাকা ডিপ হায়ারারকি তৈরী করে। এই ডিপ ভিউ হায়ারারকি পারফরমেন্সে সমস্যা তৈরী করে। আপনার ভিউ হায়ারারকি যতদূর সম্ভব অগভীর করে তৈরী করুন।

আপনার যদি একটি জটিল ইউআই থাকে, আপনার উচিত এর লেআউট সম্পাদন করতে একটি কাস্টম ViewGroup লেখার বিষয়টি বিবেচনা করা। বিল্ট-ইন ভিউয়ের মত না করে, আপনার কাস্টম ভিউ এর চিলড্রেনের সাইজ এবং শেপ সম্পর্কে অ্যাপলিকেশন-নির্দিষ্ট অনুমান করতে পারে, এবং এইভাবে পরিমাপন ক্যালকুলেট করতেএর চিলড্রেন ট্রাভাসিং পরিহার করে। পাইচার্ট নমুনা দেখায় কীভাবে একটি কাস্টম ভিউয়ের অংশ হিসাবে ViewGroup সম্প্রসারন করতে হয়, কিন্তু এটা কখনই তাদের পরিমাপ করে না। পরিবর্তে এর নিজের কাস্টম লেআউট এলগরিদম অনুসারে সরাসরি এটা তাদের সাইজ সেট করে।