وبلاگ - مطالب آموزشی

0
278
ترفندهایی برای توسعه دهندگان: بهینه سازی مصرف باتری و دیتا در اپلیکیشن های اندروید – بخش دوم

ترفندهایی برای توسعه دهندگان: بهینه سازی مصرف باتری و دیتا در اپلیکیشن های اندروید – بخش دوم

در مقاله قبلی به مواری پرداخته شد که موجب مصرف زیاد باتری از سوی اپلیکیشن می شوند، در ادامه با ما همراه باشید تا راهکارهایی برای کاهش تخلیه باتری شرح دهیم.

نتورکینگ کارآمد و طول عمر باتری

در بخش اول این مقاله تنها به عواملی پرداخته شد که طول عمر باتری را تحت تاثیر قرار می دهند، اما هیچیک از فاکتورهای مذکور به اندازه عملیات نتورک باتری مصرف نمی کند. ارتباط با شبکه چشمگیرترین دلیل تخلیه باتری است، از این رو باید راهی پیدا کنیم تا مصرف باتری را کم کنیم.

به منظور درک تاثیری که عملیات شبکه بر روی مصرف باتری دارد، اول از همه باید انواع مختلف عملیات شبکه را درک کرد، عملیات شبکه از طریق وای فای یا شبکه های 3 جی و 4 جی به اجرا درمی آیند.

به منظور حفظ انرژی، سیستم اندروید امواج رادیویی را به طور مستمر در بالاترین میزان انرژی نگه نمی دارد، زیرا عمر باتری به طور پیوسته کاهش پیدا می کند. برای درک بهتر این موضوع نگاهی به وضعیت های مختلف امواج وایرلس 3 جی بیندازید.

بهینه سازی مصرف باتری در اندروید

Full power – امواج رادیویی شبکه فعال بوده و برخی از عملیات شبکه در حال اجرا می باشد.

Low power – وضعیت متوسط که 50 درصد از انرژی باتری را مورد استفاده قرار می دهد.

Standby – عملیات شبکه وجود ندارد و مصرف باتری بسیار کم است.

وقتی که گوشی در حال اجرای فعالیت شبکه ای نیست، وضعیت در حالت کم و بیکار می ماند تا کمترین میزان باتری مصرف شود و وقتی که ارتباط برقرار شد، وضعیت به Full power تغییر پیدا می کد. بر مبنای مستندات Android Developers، تا زمانی که امواج رادیویی در حال استفاده است، وضعیت Full power آن حفظ می شود و یک زمان اضافه 5 ثانیه ای، به همراه 12 ثانیه در وضعیت Low Energy وجود دارد تا اینکه به وضعیت Standby برود.

برای یک عملیات شبکه در حال اجرا، باتری به مدت 18 ثانیه انرژی از دست می دهد و با این اوصاف انرژی نسبتا زیادی برای یک عملیات شبکه ای تلف می شود. در ادامه مقاله چندین راهکار و ترفند برای پیشگیری از استفاده بیش از حد از منابع باتری در حین اجرای عملیات شبکه شرح داده خواهد شد.

اتصالات Batch

همانطور که پیش تر نیز اشاره شد، یک تسک شبکه ای منفرد، 18 ثانیه باتری مصرف می کند. اما اگر تمامی عملیات شبکه را گروه بندی کرده و یکی را پس از دیگری به اجرا در بیاوریم چه پیش می آید؟ در این حالت دیگر نیازی به انجام عملیات بیدار کردن و خوابیدن در هر فراخوانی شبکه نمی باشد و تا زمانی که عملیات در حال اجراست، در حالت فعال می ماند و پس از آن به وضعیت Standby می رود.

اگر یک حساب سرانگشتی انجام دهید می فهمید که فرآیند 18 ثانیه ای، در یک عملیات شبکه ای بزرگ متراکم شده است. در کل امواج رادیویی برای مدت زمان کمتری فعال می ماند و دیگر فعالیت های جداگانه ای انجام نمی دهد.

اما مشکل اینجاست که تمامی تسک ها باید گروه بندی شده و از پنجره Full Power مشابهی به اجرا درآیند و از طرفی تمامی درخواست ها نمی توانند تا شکل گیری گروه منتظر بمانند. این راهکار بیشتر برای تسک های پس زمینه کارآمد خواهد بود و برای این کار می توان از JobScheduler API استفاده کرد. JobScheduler API تسک های اپلیکیشن های مختلف را گروه بندی می کند تا استفاده بهینه تری از منابع صورت پذیرد.

پیش واکشی داده ها

در اکثر موارد پیش بینی کاری که کاربر در اپلیکیشن انجام می دهد و داده هایی که باید بارگذاری شوند، کار چندان راحتی نیست. در صورت امکان می توانید با پیش واکشی کردن داده ها، از درخواست های غیرضروری جلوگیری کنید.

برای مثال اگر در حال توسعه یک اپلیکیشن audio player هستید و از قابلیت های کش نیز برای صوت های اپلیکیشن پشتیبانی می کنید، بهتر است قطعه بعدی در فهرست را پیش بارگذاری کنید، چرا که به احتمال زیاد کاربر قطعه بعدی را پلی خواهد کرد.

تبلیغات یکی از عوامل موثر در تخلیه شدن باتری می باشد

تبلیغات موبایل یکی از مهم ترین منابع درآمدی برای بسیاری از اپلیکیشن ها می باشد، اما از سوی دیگر تبلیغات یکی از عوامل مهم دخیل در تخلیه باتری می باشد و برای نمایش تصاویر رنگارنگ و ویدیوها باتری مصرف می شود. از طرفی برای بارگذاری محتویات حجیم تبلیغات، پهنای باند زیادی نیز مورد استفاده قرار می گیرد که خود موجب تخلیه باتری می شود.

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

تجزیه و تحلیل باتری با کمک ابزارهای نظارتی

برای اینکه درک بهتری از مصرف باتری داشته باشید به راهی برای کنترل وضعیت باتری نیاز دارید، اندروید استودیو یک ابزار نظارتی پیش فرض برای بررسی منابعی که توسط اپلیکیشن مصرف می شود، در خود جای داده است.

بر اساس استراتژی های نتورکینگ، قادر به تشخیص تاثیری که نتورکینگ بر روی مصرف باتری می گذارد هستید. مثال های زیر نمایش دهنده استراتژی خوب و بد در تسک های نتورکینگ می باشد.

مثال خوب – تسک های نتورک گروه بندی شده اند

بهینه سازی مصرف باتری در اندروید

مثال بد

بهینه سازی مصرف باتری در اندروید

Battery Historian

Battery historian ابزار خوب دیگری است که توسط گوگل در اختیار توسعه دهندگان قرار گرفته و با استفاده از فایل های گزارش باگ در اندروید، تجزیه و تحلیل هایی در زمینه باتری انجام می دهد. این ابزار یک جمع بندی با جزئیات از آمار باتری در گوشی های اندروید را ارائه می دهد و نشان می دهد که کدامیک از فرآیندها باتری بیشتری مصرف می کنند. نمودار زیر مثالی از امکاناتی است که این ابزار در ارتباط با نظارت بر باتری در اختیار قرار می دهد.

بهینه سازی مصرف باتری در اندروید

Battery Historian به صورت منبع باز در GitHub در دسترس می باشد.

جمع بندی

چنانچه اقدام به ساخت یک اپلیکیشن حجیم کرده اید که نیازمند منابع متعددی است، باید همواره بهینه سازی باتری را مد نظر قرار دهید.

 

منبع:

https://www.sitepoint.com