آهنگسازی فازها و اجرا، آهنگسازی فازها و اجرا، آهنگسازی فازها و اجرا، آهنگسازی فازها و اجرا

وقتی Compose یک فریم را به‌روزرسانی می‌کند، سه مرحله را طی می‌کند:

  • ترکیب‌بندی: ترکیب‌بندی تعیین می‌کند چه چیزی نمایش داده شود. این تابع، توابع قابل ترکیب را اجرا می‌کند و درخت رابط کاربری را می‌سازد.
  • چیدمان: Compose اندازه و محل قرارگیری هر عنصر را در درخت رابط کاربری تعیین می‌کند.
  • ترسیم: Compose در واقع عناصر رابط کاربری را به صورت جداگانه رندر می‌کند .

Compose می‌تواند به طور هوشمندانه از هر یک از این مراحل در صورت عدم نیاز، صرف نظر کند. برای مثال، فرض کنید یک عنصر گرافیکی بین دو آیکون با اندازه یکسان جابجا می‌شود. از آنجایی که اندازه این عنصر تغییر نمی‌کند و هیچ عنصری از درخت رابط کاربری اضافه یا حذف نمی‌شود، Compose می‌تواند از مراحل ترکیب و طرح‌بندی صرف نظر کند و این عنصر را دوباره ترسیم کند.

با این حال، اشتباهات کدنویسی می‌تواند تشخیص اینکه کدام مراحل را می‌تواند با خیال راحت رد کند، برای Compose دشوار کند، که در این صورت Compose هر سه مرحله را اجرا می‌کند، که می‌تواند رابط کاربری شما را کند کند. بنابراین، بسیاری از بهترین شیوه‌های عملکرد برای کمک به Compose در رد کردن مراحلی است که نیازی به انجام آنها ندارد.

برای اطلاعات بیشتر، به راهنمای مراحل نوشتن Jetpack مراجعه کنید.

اصول کلی

چند اصل کلی وجود دارد که رعایت آنها می‌تواند عملکرد را به طور کلی بهبود بخشد:

  • هر زمان که ممکن است، محاسبات را از توابع composable خود خارج کنید. توابع composable ممکن است نیاز به اجرای مجدد داشته باشند، هر زمان که رابط کاربری تغییر کند. هر کدی که در composable قرار می‌دهید، احتمالاً برای هر فریم از یک انیمیشن، دوباره اجرا می‌شود. کد composable را فقط به آنچه برای ساخت رابط کاربری نیاز دارد محدود کنید.
  • خواندن حالت را تا حد امکان به تعویق بیندازید. با انتقال خواندن حالت به یک فاز فرزند composable یا فاز بعدی، می‌توانید ترکیب مجدد را به حداقل برسانید یا فاز ترکیب را به طور کامل رد کنید. می‌توانید این کار را با ارسال توابع لامبدا به جای مقدار حالت برای حالت‌هایی که مرتباً در حال تغییر هستند و با ترجیح دادن اصلاح‌کننده‌های مبتنی بر لامبدا هنگام ارسال حالت‌هایی که مرتباً در حال تغییر هستند، انجام دهید. می‌توانید نمونه‌ای از این تکنیک را در بخش «به تعویق انداختن خواندن تا حد امکان» از «دنبال کردن بهترین شیوه‌ها» مشاهده کنید.

منابع اضافی