پرفورمنس در نرم‌افزار‌های اندرویدی - ۱

پرفورمنس در نرم‌افزار‌های اندرویدیبا سلام. مهربد خیابانی هستم برنامه نویس اندروید نرم افزار بله. طی این مقاله و مقالات آینده قصد دارم که کمی از تجربیات خودم رو در زمینه نوشتن یک برنامه‌ کامل و چالش‌هایی که داشتم و روش‌های حلشون بنویسم. چکیدهیکی از مباحثی که کاربران برنامه‌ها به اون توجه می‌کنن، پرفورمنس برنامه‌ای هست که باهاش کار می‌کنن. اگه برنامه بیش از حد از منابع گوشی مثل باتری، اینترنت، حافظه و ... استفاده کنه و یا هنگام کار کردن باهاش حس خوبی به کاربر منتقل نشه، احتمال پاک کردن نرم افزار توسط کاربر وجود داره. در این سری مقالات قصد داریم تا مبحث پرفورمنس در نرم‌افزار‌های اندرویدی رو مورد بررسی قرار بدیم. در ابتدا معنی و مفهوم پرفورمنس در اپلیکیشن‌های اندرویدی رو بررسی و می‌کنیم و در مقالات بعدی سعی می‌کنیم تا مراحل اندازه گیری پرفورمنس و بهبود اون رو در اپلیکیشن‌های اندرویدی داشته باشیم.پرفورمنساجرای یک ایده‌ خوب و نوشتن یک اپلیکیشن که به کاربر حس خوبی بده تازه اول راهه. مرحله‌ی بعدی نوشتن اپلیکیشن به حداکثر رسوندن پرفورمنس برنامه هست تا کاربر حس خوب و راحتی برای کار با اپلیکیشن داشته باشه. مباحث کلی زیادی زیر مجموعه‌ پرفورمنس خوب برای اپلیکیشن‌ها هست که در این مقاله به مهم‌تریناشون اشاره می‌کنیم.زمان شروع به کار برنامه:‌ کاربر از یک اپلیکیشن‌ اندرویدی انتظار داره که خیلی سریع لود بشه و شروع به کار بکنه. برنامه‌ای که زمان زیادی طول بکشه تا شروع بشه باعث نا امیدی کاربر می‌شه و ممکنه که در فروشگاه‌ها به برنامه نمره‌ی پایینی بده و یا کلا دیگه از برنامه استفاده نکنه.کرش‌های زیاد: در اپلیکیشن‌های اندرویدی وقتی که کرشی رخ می‌ده، کاربر به صورت ناگهانی و بدون اطلاع قبلی از برنامه خارج می‌شه و یک دیالوگ مبنی بر این که برنامه بسته شده به کاربر نشون داده می‌شه. هنگامی که یک Exception رو در برنامه هندل نکنیم به کرش بر می‌خوریم. برای کرش کردن حتی لازم نیست که برنامه باز باشه و تک تک کامپوننت‌های برنامه مثل Receiver ها هم می‌تونن تو background کرش کنن. این کرش‌ها می‌تونن به دلایل مختلف اتفاق بیوفتن.استفاده زیاد از اینترنت در background: یکی از ویژگی‌هایی که کاربر از یک برنامه‌ انتظار داره، مصرف باتری بهینه اپلیکیشن هست. با استفاده زیاد از اینترنت بخصوص در background، باتری کاربر توسط اپلیکیشن به اندازه‌ی زیادی مصرف می‌شه و در اندروید این مصرف زیاد به کاربر اطلاع داده می‌شه و کاربر می‌تونه اجازه‌ی دسترسی به اینترنت رو از اپلیکیشن بگیره یا به کل اپلیکیشن رو از گوشی خودش پاک کنه. همچنین این موضوع می‌تونه به اطمینان کاربران به اپلیکیشن لطمه بزنه.رندر شدن آهسته‌ی صفحات: در اندروید برای رندر کردن صفحات یک محدودیت زمانی وجود داره. برای گوشی‌هایی که سرعت تازه‌سازی صفحه‌ی اون‌ها 60Hz هست این زمان حدود ۱۶ میلی ثانیه هست. در اگر در زمان که رندر شدن یک فریم تا فریم بعدی طول می‌کشه، بیشتر از ۱۶ میلی ثانیه باشه، کاربر احساس کندی و تاخیر کار با اپلیکیشن رو می‌کنه که از کیفیت کلی برنامه کم می‌کنه.‌‌‌فریم یخ‌ زده(Frozen Frames): اگر رندر شدن یک فریم بیشتر از ۷۰۰ میلی ثانیه طول بکشه، این حالت رخ می‌ده. در این حالت کاربر نزدیک یک ثانیه‌ نمی‌تونه با اپلیکیشن کاری انجام بده و حس قفل شدن و از کار افتادن برنامه به کاربر دست می‌ده. اگرچه در حالت کلی بهتره رندر شدن صفحات بیش از ۱۶ میلی ثانیه طول نکشه، اما هنگام تعویض صفحات یا شروع شدن اپلیکیشن اشکالی نداره که این زمان بیشتر بشه. اما وقتی که این زمان به بیشتر از ۷۰۰ میلی ثانیه برسه، مشکل فریم یخ‌ زده رخ می‌ده.پاسخگو نبودن برنامه(‌ANR): ‌وقتی که ترد اصلی برنامه‌ اندرویدی به مدت زیادی بلاک باشه و پاسخ نده، دیالوگی به کاربر مبنی بر پاسخگو نبودن برنامه نمایش داده می‌شه که کاربر می‌تونه اپلیکیشن رو با استفاده از اون ببنده. این اتفاق حس کم کیفیت بودن اپلیکیشن رو به کاربر القا می‌کنه.ANRرد کردن درخواست‌های دسترسی: ‌کاربرا می‌تونن به کاربرد‌های اصلی گوشی‌‌های اندرویدی دسترسی بدن. به عنوان مثال دسترسی دوربین برای یک اپلیکیشن که کارش عکس برداری هست یک دسترسی قابل قبول و قابل فهمه. اما اگه کاربرای زیادی به طور مکرر یکی از درخواست‌های دسترسی اپلیکیشن رو رد کنن، نشون می‌ده که کاربرا دلیل داشتن اون دسترسی خاص رو نمی‌دونن. به طور مثال درخواست دسترسی موقعیت یاب برای یک اپلیکیشن عکاسی.در مقالات بعد به بررسی مانیتور کردن و همینطور بهبود پرفورمنس برنامه‌های اندرویدی خواهیم پرداخت.