একটি কাস্টম ভিউ অপ্টিমাইজ করুন

যখন আপনার কাছে একটি ভাল-পরিকল্পিত দৃশ্য থাকে যা অঙ্গভঙ্গি এবং রাজ্যগুলির মধ্যে স্থানান্তরের প্রতিক্রিয়া জানায়, নিশ্চিত করুন যে দৃশ্যটি দ্রুত চলে। প্লেব্যাকের সময় অলস বা তোতলামি অনুভব করে এমন একটি UI এড়াতে, নিশ্চিত করুন যে অ্যানিমেশনগুলি ধারাবাহিকভাবে প্রতি সেকেন্ডে 60 ফ্রেমে চলে।

আপনার ভিউ ত্বরান্বিত করুন

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

onDraw() leaner তৈরি করার পাশাপাশি, নিশ্চিত করুন যে এটি যতটা সম্ভব কদাচিৎ কল করা হয়েছে। onDraw() এ বেশিরভাগ কল invalidate() এর কলের ফলাফল, তাই invalidate() এর জন্য অপ্রয়োজনীয় কলগুলি বাদ দিন।

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

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

উদাহরণস্বরূপ, যদি আপনার কাছে একটি কাস্টম ViwGroup থাকে যা তার সমস্ত চাইল্ড ভিউয়ের সাথে মানানসই তার নিজস্ব আকার সামঞ্জস্য না করে, তাহলে আপনি সমস্ত শিশুর দৃষ্টিভঙ্গি পরিমাপ করার ওভারহেড এড়িয়ে যান। এই অপ্টিমাইজেশানটি সম্ভব নয় যদি আপনি বিল্ট-ইন লেআউটগুলি ব্যবহার করেন যা ব্যবহারের ক্ষেত্রে বিস্তৃত পরিসরে পূরণ করে৷

,

যখন আপনার কাছে একটি ভাল-পরিকল্পিত দৃশ্য থাকে যা অঙ্গভঙ্গি এবং রাজ্যগুলির মধ্যে স্থানান্তরের প্রতিক্রিয়া জানায়, নিশ্চিত করুন যে দৃশ্যটি দ্রুত চলে। প্লেব্যাকের সময় অলস বা তোতলামি অনুভব করে এমন একটি UI এড়াতে, নিশ্চিত করুন যে অ্যানিমেশনগুলি ধারাবাহিকভাবে প্রতি সেকেন্ডে 60 ফ্রেমে চলে।

আপনার ভিউ ত্বরান্বিত করুন

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

onDraw() leaner তৈরি করার পাশাপাশি, নিশ্চিত করুন যে এটি যতটা সম্ভব কদাচিৎ কল করা হয়েছে। onDraw() এ বেশিরভাগ কল invalidate() এর কলের ফলাফল, তাই invalidate() এর জন্য অপ্রয়োজনীয় কলগুলি বাদ দিন।

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

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

উদাহরণস্বরূপ, যদি আপনার কাছে একটি কাস্টম ViwGroup থাকে যা তার সমস্ত চাইল্ড ভিউয়ের সাথে মানানসই তার নিজস্ব আকার সামঞ্জস্য না করে, তাহলে আপনি সমস্ত শিশুর দৃষ্টিভঙ্গি পরিমাপ করার ওভারহেড এড়িয়ে যান। এই অপ্টিমাইজেশানটি সম্ভব নয় যদি আপনি বিল্ট-ইন লেআউটগুলি ব্যবহার করেন যা ব্যবহারের ক্ষেত্রে বিস্তৃত পরিসরে পূরণ করে৷