نکاتی برای بهبود عملکرد برنامه اندروید
در این مقاله می خواهیم به نکاتی اشاره کنیم که موجب بهبود عملکرد برنامه اندروید شما می شوند. در ابتدا باید متذکر شویم که این نکات به بهبود عملکرد برنامه کمک خواهند کرد اما بهترین راه برای داشتن عملکرد مناسب، استفاده از الگوریتم ها و ساختارهای داده ای مناسب است که از حوصله این بحث خارج است. توصیه می کنیم که این نکات را تمرین و برای خود تبدیل به عادت کنید.
قبل از پرداختن به نکات لازم است به دو قانون پایه برای نوشتن کدهای بهینه توجه کنید:
- کاری را که لازم به انجام آن نیست، انجام ندهید.
- در حافظه، فضا اشغال نکنید زمانی که می توانید از این کار اجتناب کنید.
این دو قانون بسیار ساده هستند و درواقع می توان گفت برای خیلی از برنامه نویسان تبدیل به عادت شده است اما گاهی اوقات همین دو قانون ساده فراموش می شوند.
یکی ازدلایل اصلی بسیاری از عملکرد های نامناسب برنامه های اندروید به دلیل اجرا شدن Garbage Collector آن هم به دفعات زیاد و بیشتر از برنامه اصلی است. حال این سوال شاید پیش بیاید که Garbage Collector چیست؟
در زمان اجرای برنامه، بخش هایی از حافظه که اشغال شده بودند، آزاد می شوند. اگر این بخش ها برای زمان زیادی بلا استفاده باشند، سیستم اندروید، به صورت خودکار، این بخش ها را به heap منتقل می کند. به این مکانیزم Garbage Collector می گویند.
در زمان اجرای برنامه، object های زیادی ساخته می شوند، زمانی که سیستم اندروید تشخیص دهد که object بلا استفاده است، GC را فراخوانی می کند تا فشار وارده بر روی حافظه را کم کند. بنابراین اگر روند ساختن و آزاد کردن حافظه، به دفعات زیاد و به طور منظم اتفاق بیافتد، به همان میزان نیز، فراخوانی GC اتفاق می افتد و در همین حین برنامه اجرای خود را متوقف میکند و به اصطلاح lag ایجاد می شود.
اما دلیل اینکه برنامه در زمان فراخوانی GC دچار lag می شود، چیست؟
رابط کاربری برنامه یا UI در هر ۱۶ میلی ثانیه، به روزرسانی می شود تا بتواند یک rendering روان را ایجاد کند. در زمانی که GC فراخوانی می شود، برنامه نمی تواند UI خود را به روزرسانی کند و درنتیجه مجبور می شود تا تعدادی فریم را نادیده بگیرد و از آنان رد شود و درواقع اینطور به نظر می رسد که برنامه دچار lag شده است.
دلیل دیگر اینکه برنامه دچار lag می شود، انجام کارهای زیاد در main thread است. اگر متدهای شما در main thread، زمان اجرایی بیش از ۱۶ میلی ثانیه داشته باشند، در این زمان نیز، برنامه قادر به به روزرسانی UI خود نیست ودرنتیجه باز هم برنامه دچار lag می شود.
حال برای اینکه تا حد امکان برنامه را از مواجه شدن با lag دور نگه داریم، به نکات زیر توجه کنید:
- از انجام کارهای زیاد در main thread دوری کنید.
- زمانی object را مقدار دهی کنید که به آن نیاز دارید.
- در صورت امکان، به جای استفاده از Integer، Boolean و…. از نوع primitive آنها یعنی int ، boolean و …. استفاده کنید.
- از مفهوم Object Pool استفاده کنید.
- از مقدار دادن به object های زیادی که بلا استفاده هستند، دوری کنید.
- از پیشوند های static final برای Constant ها استفاده کنید.
- از getter ها و setter های داخلی احتناب کنید.( دسترسی مستقیم به یک field ، تا ۳ برابر سریعتر است.)
- به جای استفاده از کلاس های static ، از کلاس های داخلی static استفاده کنید.
- در زمان استفاده از عکس در برنامه، تا جای ممکن، از عکسهای vector وبا حجم پایین استفاده کنید.
- تا حد امکان، از متغیرهای محلی به جای متغیرهای سراسری استفاده کنید.
- از کتابخانه هایی که لازم ندارید، در پروژه خود، استفاده نکنید.
اینها نکاتی بودند که برای بهبود عملکرد برنامه اندروید ذکر شدند و بهتر است که این نکات را تمرین و برای خود تبدیل به عادت کنید.
مطالب زیر را حتما مطالعه کنید
آموزش Gradle – اهمیت Project Automation
درک مفهوم کدنویسی تمیز در اندروید
5 هک ساده برای کاهش سایز فایل APK
آشنایی با RecyclerView در اندروید
Open/Closed Principle در قوانین Solid
توابع در زبان برنامه نویسی Kotlin
2 Comments
Join the discussion and tell us your opinion.
دیدگاهتان را بنویسید لغو پاسخ
برای نوشتن دیدگاه باید وارد بشوید.
البته پترن Object pool دپریکیت شده
بله، صحیح میفرمایید. ممنون از تذکر شما