استفاده از رادیو بی سیم برای انتقال داده به طور بالقوه یکی از مهم ترین منابع تخلیه باتری برنامه شما است. برای به حداقل رساندن تخلیه باتری مرتبط با فعالیت شبکه، بسیار مهم است که بدانید مدل اتصال شما چگونه بر سخت افزار رادیویی زیرین تأثیر می گذارد.
این بخش دستگاه حالت رادیویی بی سیم را معرفی می کند و نحوه تعامل مدل اتصال برنامه شما با آن را توضیح می دهد. سپس چندین تکنیک ارائه می دهد که در صورت رعایت آنها، به حداقل رساندن اثر مصرف داده برنامه شما بر روی باتری کمک می کند.
ماشین حالت رادیویی
رادیو بیسیم روی دستگاه کاربر شما دارای ویژگیهای داخلی ذخیرهسازی انرژی است که به کاهش میزان مصرف باتری کمک میکند. هنگامی که رادیو بی سیم به طور کامل فعال است، انرژی قابل توجهی مصرف می کند، اما در حالت غیرفعال یا در حالت آماده به کار، رادیو انرژی بسیار کمی مصرف می کند.
یکی از عوامل مهمی که باید به خاطر بسپارید این است که رادیو نمی تواند فوراً از حالت آماده به کار به حالت کاملاً فعال حرکت کند. یک دوره تاخیر در ارتباط با "روشن کردن" رادیو وجود دارد. بنابراین، باتری از حالتهای انرژی بالاتر به حالتهای انرژی پایینتر به آرامی تغییر میکند تا در صورت عدم استفاده، در مصرف انرژی صرفهجویی کند و در عین حال تلاش برای به حداقل رساندن تأخیر مرتبط با "روشن کردن" رادیو.
ماشین حالت برای یک رادیو شبکه معمولی 3G از سه حالت انرژی تشکیل شده است:
- قدرت کامل : زمانی که اتصال فعال است استفاده می شود و به دستگاه امکان می دهد داده ها را با بالاترین سرعت ممکن انتقال دهد.
- کم مصرف : حالت متوسطی که مصرف انرژی باتری را تا حدود 50 درصد کاهش می دهد.
- Standby : حالت حداقل مصرف انرژی که در طی آن هیچ اتصال شبکه ای فعال نیست.
در حالی که حالت های کم و آماده به کار باتری کمتری را تخلیه می کنند، همچنین تاخیر قابل توجهی را در درخواست های شبکه ایجاد می کنند. بازگشت به حالت کامل از حالت کم حدود 1.5 ثانیه طول می کشد و حرکت از حالت آماده به کار به حالت کامل می تواند بیش از 2 ثانیه طول بکشد.
برای به حداقل رساندن تأخیر، ماشین حالت از تأخیر برای به تعویق انداختن انتقال به حالتهای انرژی پایینتر استفاده میکند. شکل 1 از زمان بندی AT&T برای یک رادیو 3G معمولی استفاده می کند.
ماشین حالت رادیویی در هر دستگاه، به ویژه تاخیر انتقال مرتبط ("زمان دم") و تاخیر راه اندازی، بر اساس فناوری رادیویی بی سیم مورد استفاده (3G، LTE، 5G، و غیره) متفاوت خواهد بود و توسط دستگاه تعریف و پیکربندی می شود. شبکه حاملی که دستگاه روی آن کار می کند.
این صفحه یک ماشین حالت نماینده را برای یک رادیو بی سیم معمولی 3G، بر اساس داده های ارائه شده توسط AT&T توصیف می کند. با این حال، اصول کلی و بهترین شیوه های حاصل برای همه پیاده سازی های رادیویی بی سیم قابل اجرا هستند.
این رویکرد به ویژه برای مرور وب موبایل معمولی مؤثر است زیرا از تأخیر ناخواسته در هنگام مرور وب توسط کاربران جلوگیری می کند. زمان نسبتاً کم دم همچنین تضمین می کند که پس از پایان جلسه مرور، رادیو می تواند به حالت انرژی پایین تر حرکت کند.
متأسفانه، این رویکرد میتواند به برنامههای ناکارآمد در سیستمعاملهای مدرن گوشیهای هوشمند مانند اندروید منجر شود، جایی که برنامهها هم در پیشزمینه (جایی که تأخیر مهم است) و هم در پسزمینه (جایی که عمر باتری باید در اولویت قرار گیرد) اجرا میشوند.
چگونه برنامهها بر دستگاه حالت رادیویی تأثیر میگذارند
هر بار که یک اتصال شبکه جدید ایجاد می کنید، رادیو به حالت قدرت کامل منتقل می شود. در مورد ماشین حالت رادیویی معمولی 3G که قبلاً توضیح داده شد، در تمام مدت انتقال شما - به اضافه 5 ثانیه زمان اضافی - و به دنبال آن 12 ثانیه در حالت کم انرژی، در قدرت کامل باقی می ماند. بنابراین برای یک دستگاه معمولی 3G، هر جلسه انتقال داده باعث می شود رادیو حداقل 18 ثانیه انرژی بگیرد.
در عمل، این بدان معناست که برنامهای که یک ثانیه انتقال داده، سه بار در دقیقه انجام میدهد، رادیو بیسیم را همیشه فعال نگه میدارد و درست زمانی که وارد حالت آماده به کار میشود، آن را به قدرت بالا برمیگرداند.
در مقایسه، اگر همان برنامه انتقال دادههای خود را به صورت بستهبندی کند و هر دقیقه یک انتقال سه ثانیهای را اجرا کند، این کار رادیو را در مجموع تنها 20 ثانیه در هر دقیقه در حالت پرتوان نگه میدارد. این به رادیو اجازه می دهد در هر دقیقه 40 ثانیه در حالت آماده به کار باشد و در نتیجه مصرف باتری به میزان قابل توجهی کاهش یابد.
تکنیک های بهینه سازی
اکنون که متوجه شدید که دسترسی به شبکه چگونه بر عمر باتری تأثیر میگذارد، بیایید در مورد چند نکته صحبت کنیم که میتوانید برای کمک به کاهش تخلیه باتری انجام دهید و در عین حال تجربه کاربری سریع و روانی را نیز ارائه دهید.
بسته های انتقال داده
همانطور که در بخش قبل گفته شد، بستهبندی انتقال دادهها به گونهای که کمتر دادههای بیشتری را انتقال دهید، یکی از بهترین راهها برای بهبود کارایی باتری است.
البته اگر برنامه شما نیاز به دریافت یا ارسال فوری داده در پاسخ به اقدام کاربر داشته باشد، همیشه این کار امکان پذیر نیست. میتوانید با پیشبینی و واکشی از قبل دادهها، این موضوع را کاهش دهید. سناریوهای دیگر، مانند ارسال گزارشها یا تجزیه و تحلیلها به یک سرور و سایر انتقالهای داده غیر فوری و غیر فوری که از طریق برنامه شروع میشود، برای دستهبندی و بستهبندی بسیار مناسب هستند. برای نکاتی درباره زمانبندی انتقالهای شبکه پسزمینه ، به بهینهسازی وظایف آغاز شده توسط برنامه مراجعه کنید.
داده ها را از قبل واکشی کنید
واکشی اولیه داده ها روش موثر دیگری برای کاهش تعداد جلسات انتقال داده مستقل است که برنامه شما اجرا می کند. با واکشی اولیه، زمانی که کاربر اقدامی را در برنامه شما انجام میدهد، برنامه پیشبینی میکند که به احتمال زیاد چه دادههایی برای سری بعدی اقدامات کاربر مورد نیاز خواهد بود و آن دادهها را به صورت پشت سر هم، از طریق یک اتصال، با ظرفیت کامل واکشی میکند.
با بارگذاری جلوی انتقالهای خود، تعداد فعالسازیهای رادیویی مورد نیاز برای دانلود دادهها را کاهش میدهید. در نتیجه، نه تنها عمر باتری را حفظ می کنید، بلکه تأخیر را نیز بهبود می بخشید، پهنای باند مورد نیاز را کاهش می دهید و زمان دانلود را کاهش می دهید.
واکشی اولیه همچنین با به حداقل رساندن تأخیر درون برنامه ناشی از انتظار برای تکمیل دانلودها قبل از انجام یک عمل یا مشاهده داده، تجربه کاربری بهبود یافته ای را فراهم می کند.
در اینجا یک مثال عملی است.
یک خبرخوان
بسیاری از برنامههای خبری تلاش میکنند تا پهنای باند را با دانلود سرفصلها تنها پس از انتخاب دستهبندی، مقالات کامل تنها زمانی که کاربر بخواهد آنها را بخواند، و تصاویر بندانگشتی را درست زمانی که به نمایش در میآیند، کاهش دهند.
با استفاده از این رویکرد، رادیو مجبور میشود برای اکثر جلسات اخبارخوانی کاربران، در حالی که سرفصلها را مرور میکنند، دستهها را تغییر میدهند و مقالات را میخوانند، فعال باقی بماند. نه تنها این، تغییر مداوم بین حالات انرژی منجر به تأخیر قابل توجهی در هنگام تعویض دسته ها یا خواندن مقالات می شود.
یک رویکرد بهتر این است که مقدار معقولی از دادهها را در هنگام راهاندازی از قبل واکشی کنید، که با اولین مجموعه از سرفصلها و تصاویر کوچک اخبار شروع میشود - تضمین زمان راهاندازی با تأخیر کم - و ادامه با سرفصلها و ریز عکسهای باقیمانده، و همچنین متن مقاله برای هر یک. مقاله حداقل از فهرست سرفصل اولیه موجود است.
جایگزین دیگر این است که هر عنوان، تصویر کوچک، متن مقاله، و احتمالاً حتی تصاویر کامل مقاله را از قبل واکشی کنید—معمولاً در پسزمینه در یک برنامه از پیش تعیینشده. این رویکرد خطر صرف پهنای باند و عمر باتری قابل توجهی را برای دانلود محتوایی که هرگز استفاده نشده است به همراه دارد، بنابراین باید با احتیاط اجرا شود.
ملاحظات اضافی
در حالی که واکشی اولیه داده ها دارای مزایای زیادی است، استفاده از واکشی اولیه بیش از حد تهاجمی نیز خطر افزایش مصرف باتری و استفاده از پهنای باند - و همچنین سهمیه دانلود - را با دانلود داده هایی که استفاده نمی شود، ایجاد می کند. همچنین مهم است که اطمینان حاصل شود که واکشی اولیه راه اندازی برنامه را به تاخیر نمی اندازد، در حالی که برنامه منتظر می ماند تا واکشی اولیه تکمیل شود. از نظر عملی، این ممکن است به معنای پردازش تدریجی دادهها یا آغاز انتقالهای متوالی باشد، به گونهای که دادههای مورد نیاز برای راهاندازی برنامه ابتدا دانلود و پردازش شوند.
اینکه چگونه دادهها را به طور تهاجمی واکشی میکنید به اندازه دادههایی که دانلود میشوند و احتمال استفاده از آنها بستگی دارد. به عنوان یک راهنمای تقریبی، بر اساس ماشین حالت که قبلاً توضیح داده شد، برای دادههایی که 50% احتمال استفاده در جلسه کاربر فعلی دارند، معمولاً میتوانید حدود 6 ثانیه (تقریباً 1 تا 2 مگابایت) قبل از هزینه احتمالی واکشی اولیه برای شروع، دانلود داده های استفاده نشده با صرفه جویی بالقوه عدم دانلود آن داده مطابقت دارد.
به طور کلی، واکشی از قبل داده ها به گونه ای عمل خوبی است که فقط باید هر 2 تا 5 دقیقه یک بار دانلود دیگری و به ترتیب 1 تا 5 مگابایت شروع کنید.
با پیروی از این اصل، دانلودهای بزرگ - مانند فایل های ویدئویی - باید به صورت تکه تکه در فواصل زمانی معین (هر 2 تا 5 دقیقه) بارگیری شوند و عملاً فقط داده های ویدیویی که احتمالاً در چند دقیقه آینده مشاهده می شوند، از قبل واکشی شوند.
یک راه حل این است که زمانبندی دانلود کامل فقط در صورت اتصال به Wi-Fi و احتمالاً فقط زمانی که دستگاه در حال شارژ است انجام شود. WorkManager API دقیقاً از این مورد استفاده میکند و به شما این امکان را میدهد تا کارهای پسزمینه را محدود کنید تا زمانی که دستگاه با معیارهای تعیینشده توسط توسعهدهنده، مانند شارژ کردن و اتصال به Wi-Fi مطابقت داشته باشد.
قبل از درخواست، اتصال را بررسی کنید
جستجوی سیگنال سلولی یکی از کم مصرف ترین عملیات در دستگاه تلفن همراه است. بهترین روش برای درخواستهای آغاز شده توسط کاربر این است که ابتدا اتصال را با استفاده از ConnectivityManager
بررسی کنید، همانطور که در وضعیت اتصال مانیتور و اندازهگیری اتصال نشان داده شده است. اگر شبکه وجود نداشته باشد، برنامه میتواند با مجبور نکردن رادیو تلفن همراه به جستجو در باتری صرفهجویی کند. سپس میتوان درخواست را برنامهریزی کرد و به صورت دستهای با سایر درخواستها هنگام برقراری اتصال، انجام داد.
اتصالات استخر
یک استراتژی اضافی که میتواند علاوه بر دستهبندی و واکشی اولیه به شما کمک کند، تجمیع اتصالات شبکه برنامه شما است.
به طور کلی استفاده مجدد از اتصالات شبکه موجود کارآمدتر از راه اندازی اتصالات جدید است. استفاده مجدد از اتصالات همچنین به شبکه این امکان را می دهد که به طور هوشمندانه تری به ازدحام و مسائل مربوط به داده های شبکه واکنش نشان دهد.
HttpURLConnection
و اکثر کلاینتهای HTTP، مانند OkHttp ، به طور پیشفرض، ادغام اتصال و استفاده مجدد از یک اتصال را برای چندین درخواست فعال میکنند.
جمع بندی کنید و به آینده نگاه کنید
در این بخش، چیزهای زیادی در مورد رادیو بیسیم و چند استراتژی یاد گرفتید که میتوانید به طور گسترده از آنها برای ارائه تجربه کاربری سریع و پاسخگو و در عین حال کاهش مصرف باتری استفاده کنید.
در بخش بعدی، نگاهی مفصل به سه نوع متمایز از تعاملات شبکهای که در اکثر برنامهها رایج است، خواهیم داشت. شما درایورهای هر یک از این انواع و همچنین تکنیکها و APIهای مدرن برای مدیریت موثر این تعاملات را خواهید آموخت.
،استفاده از رادیو بی سیم برای انتقال داده به طور بالقوه یکی از مهم ترین منابع تخلیه باتری برنامه شما است. برای به حداقل رساندن تخلیه باتری مرتبط با فعالیت شبکه، بسیار مهم است که بدانید مدل اتصال شما چگونه بر سخت افزار رادیویی زیرین تأثیر می گذارد.
این بخش دستگاه حالت رادیویی بی سیم را معرفی می کند و نحوه تعامل مدل اتصال برنامه شما با آن را توضیح می دهد. سپس چندین تکنیک ارائه می دهد که در صورت رعایت آنها، به حداقل رساندن اثر مصرف داده برنامه شما بر روی باتری کمک می کند.
ماشین حالت رادیویی
رادیو بیسیم روی دستگاه کاربر شما دارای ویژگیهای داخلی ذخیرهسازی انرژی است که به کاهش میزان مصرف باتری کمک میکند. هنگامی که رادیو بی سیم به طور کامل فعال است، انرژی قابل توجهی مصرف می کند، اما در حالت غیرفعال یا در حالت آماده به کار، رادیو انرژی بسیار کمی مصرف می کند.
یکی از عوامل مهمی که باید به خاطر بسپارید این است که رادیو نمی تواند فوراً از حالت آماده به کار به حالت کاملاً فعال حرکت کند. یک دوره تاخیر در ارتباط با "روشن کردن" رادیو وجود دارد. بنابراین، باتری از حالتهای انرژی بالاتر به حالتهای انرژی پایینتر به آرامی تغییر میکند تا در صورت عدم استفاده، در مصرف انرژی صرفهجویی کند و در عین حال تلاش برای به حداقل رساندن تأخیر مرتبط با "روشن کردن" رادیو.
ماشین حالت برای یک رادیو شبکه معمولی 3G از سه حالت انرژی تشکیل شده است:
- قدرت کامل : زمانی که اتصال فعال است استفاده می شود و به دستگاه امکان می دهد داده ها را با بالاترین سرعت ممکن انتقال دهد.
- کم مصرف : حالت متوسطی که مصرف انرژی باتری را تا حدود 50 درصد کاهش می دهد.
- Standby : حالت حداقل مصرف انرژی که در طی آن هیچ اتصال شبکه ای فعال نیست.
در حالی که حالت های کم و آماده به کار باتری کمتری را تخلیه می کنند، همچنین تاخیر قابل توجهی را در درخواست های شبکه ایجاد می کنند. بازگشت به حالت کامل از حالت کم حدود 1.5 ثانیه طول می کشد و حرکت از حالت آماده به کار به حالت کامل می تواند بیش از 2 ثانیه طول بکشد.
برای به حداقل رساندن تأخیر، ماشین حالت از تأخیر برای به تعویق انداختن انتقال به حالتهای انرژی پایینتر استفاده میکند. شکل 1 از زمان بندی AT&T برای یک رادیو 3G معمولی استفاده می کند.
ماشین حالت رادیویی در هر دستگاه، به ویژه تاخیر انتقال مرتبط ("زمان دم") و تاخیر راه اندازی، بر اساس فناوری رادیویی بی سیم مورد استفاده (3G، LTE، 5G، و غیره) متفاوت خواهد بود و توسط دستگاه تعریف و پیکربندی می شود. شبکه حاملی که دستگاه روی آن کار می کند.
این صفحه یک ماشین حالت نماینده را برای یک رادیو بی سیم معمولی 3G، بر اساس داده های ارائه شده توسط AT&T توصیف می کند. با این حال، اصول کلی و بهترین شیوه های حاصل برای همه پیاده سازی های رادیویی بی سیم قابل اجرا هستند.
این رویکرد به ویژه برای مرور وب موبایل معمولی مؤثر است زیرا از تأخیر ناخواسته در هنگام مرور وب توسط کاربران جلوگیری می کند. زمان نسبتاً کم دم همچنین تضمین می کند که پس از پایان جلسه مرور، رادیو می تواند به حالت انرژی پایین تر حرکت کند.
متأسفانه، این رویکرد میتواند به برنامههای ناکارآمد در سیستمعاملهای مدرن گوشیهای هوشمند مانند اندروید منجر شود، جایی که برنامهها هم در پیشزمینه (جایی که تأخیر مهم است) و هم در پسزمینه (جایی که عمر باتری باید در اولویت قرار گیرد) اجرا میشوند.
چگونه برنامهها بر دستگاه حالت رادیویی تأثیر میگذارند
هر بار که یک اتصال شبکه جدید ایجاد می کنید، رادیو به حالت قدرت کامل منتقل می شود. در مورد ماشین حالت رادیویی معمولی 3G که قبلاً توضیح داده شد، در تمام مدت انتقال شما - به اضافه 5 ثانیه زمان اضافی - و به دنبال آن 12 ثانیه در حالت کم انرژی، در قدرت کامل باقی می ماند. بنابراین برای یک دستگاه معمولی 3G، هر جلسه انتقال داده باعث می شود رادیو حداقل 18 ثانیه انرژی بگیرد.
در عمل، این بدان معناست که برنامهای که یک ثانیه انتقال داده، سه بار در دقیقه انجام میدهد، رادیو بیسیم را همیشه فعال نگه میدارد و درست زمانی که وارد حالت آماده به کار میشود، آن را به قدرت بالا برمیگرداند.
در مقایسه، اگر همان برنامه انتقال دادههای خود را به صورت بستهبندی کند و هر دقیقه یک انتقال سه ثانیهای را اجرا کند، این کار رادیو را در مجموع تنها 20 ثانیه در هر دقیقه در حالت پرتوان نگه میدارد. این به رادیو اجازه می دهد در هر دقیقه 40 ثانیه در حالت آماده به کار باشد و در نتیجه مصرف باتری به میزان قابل توجهی کاهش یابد.
تکنیک های بهینه سازی
اکنون که متوجه شدید که دسترسی به شبکه چگونه بر عمر باتری تأثیر میگذارد، بیایید در مورد چند نکته صحبت کنیم که میتوانید برای کمک به کاهش تخلیه باتری انجام دهید و در عین حال تجربه کاربری سریع و روانی را نیز ارائه دهید.
بسته های انتقال داده
همانطور که در بخش قبل گفته شد، بستهبندی انتقال دادهها به گونهای که کمتر دادههای بیشتری را انتقال دهید، یکی از بهترین راهها برای بهبود کارایی باتری است.
البته اگر برنامه شما نیاز به دریافت یا ارسال فوری داده در پاسخ به اقدام کاربر داشته باشد، همیشه این کار امکان پذیر نیست. میتوانید با پیشبینی و واکشی از قبل دادهها، این موضوع را کاهش دهید. سناریوهای دیگر، مانند ارسال گزارشها یا تجزیه و تحلیلها به یک سرور و سایر انتقالهای داده غیر فوری و غیر فوری که از طریق برنامه شروع میشود، برای دستهبندی و بستهبندی بسیار مناسب هستند. برای نکاتی درباره زمانبندی انتقالهای شبکه پسزمینه ، به بهینهسازی وظایف آغاز شده توسط برنامه مراجعه کنید.
داده ها را از قبل واکشی کنید
واکشی اولیه داده ها روش موثر دیگری برای کاهش تعداد جلسات انتقال داده مستقل است که برنامه شما اجرا می کند. با واکشی اولیه، زمانی که کاربر اقدامی را در برنامه شما انجام میدهد، برنامه پیشبینی میکند که به احتمال زیاد چه دادههایی برای سری بعدی اقدامات کاربر مورد نیاز خواهد بود و آن دادهها را به صورت پشت سر هم، از طریق یک اتصال، با ظرفیت کامل واکشی میکند.
با بارگذاری جلوی انتقالهای خود، تعداد فعالسازیهای رادیویی مورد نیاز برای دانلود دادهها را کاهش میدهید. در نتیجه، نه تنها عمر باتری را حفظ می کنید، بلکه تأخیر را نیز بهبود می بخشید، پهنای باند مورد نیاز را کاهش می دهید و زمان دانلود را کاهش می دهید.
واکشی اولیه همچنین با به حداقل رساندن تأخیر درون برنامه ناشی از انتظار برای تکمیل دانلودها قبل از انجام یک عمل یا مشاهده داده، تجربه کاربری بهبود یافته ای را فراهم می کند.
در اینجا یک مثال عملی است.
یک خبرخوان
بسیاری از برنامههای خبری تلاش میکنند تا پهنای باند را با دانلود سرفصلها تنها پس از انتخاب دستهبندی، مقالات کامل تنها زمانی که کاربر بخواهد آنها را بخواند، و تصاویر بندانگشتی را درست زمانی که به نمایش در میآیند، کاهش دهند.
با استفاده از این رویکرد، رادیو مجبور میشود برای اکثر جلسات اخبارخوانی کاربران، در حالی که سرفصلها را مرور میکنند، دستهها را تغییر میدهند و مقالات را میخوانند، فعال باقی بماند. نه تنها این، تغییر مداوم بین حالات انرژی منجر به تأخیر قابل توجهی در هنگام تعویض دسته ها یا خواندن مقالات می شود.
یک رویکرد بهتر این است که مقدار معقولی از دادهها را در هنگام راهاندازی از قبل واکشی کنید، که با اولین مجموعه از سرفصلها و تصاویر کوچک اخبار شروع میشود - تضمین زمان راهاندازی با تأخیر کم - و ادامه با سرفصلها و ریز عکسهای باقیمانده، و همچنین متن مقاله برای هر یک. مقاله حداقل از فهرست سرفصل اولیه موجود است.
جایگزین دیگر این است که هر عنوان، تصویر کوچک، متن مقاله، و احتمالاً حتی تصاویر کامل مقاله را از قبل واکشی کنید—معمولاً در پسزمینه در یک برنامه از پیش تعیینشده. این رویکرد خطر صرف پهنای باند و عمر باتری قابل توجهی را برای دانلود محتوایی که هرگز استفاده نشده است به همراه دارد، بنابراین باید با احتیاط اجرا شود.
ملاحظات اضافی
در حالی که واکشی اولیه داده ها دارای مزایای زیادی است، استفاده از واکشی اولیه بیش از حد تهاجمی نیز خطر افزایش مصرف باتری و استفاده از پهنای باند - و همچنین سهمیه دانلود - را با دانلود داده هایی که استفاده نمی شود، ایجاد می کند. همچنین مهم است که اطمینان حاصل شود که واکشی اولیه راه اندازی برنامه را به تاخیر نمی اندازد، در حالی که برنامه منتظر می ماند تا واکشی اولیه تکمیل شود. از نظر عملی، این ممکن است به معنای پردازش تدریجی دادهها یا آغاز انتقالهای متوالی باشد، به گونهای که دادههای مورد نیاز برای راهاندازی برنامه ابتدا دانلود و پردازش شوند.
اینکه چگونه دادهها را به طور تهاجمی واکشی میکنید به اندازه دادههایی که دانلود میشوند و احتمال استفاده از آنها بستگی دارد. به عنوان یک راهنمای تقریبی، بر اساس ماشین حالت که قبلاً توضیح داده شد، برای دادههایی که 50% احتمال استفاده در جلسه کاربر فعلی دارند، معمولاً میتوانید حدود 6 ثانیه (تقریباً 1 تا 2 مگابایت) قبل از هزینه احتمالی واکشی اولیه برای شروع، دانلود داده های استفاده نشده با صرفه جویی بالقوه عدم دانلود آن داده مطابقت دارد.
به طور کلی، واکشی از قبل داده ها به گونه ای عمل خوبی است که فقط باید هر 2 تا 5 دقیقه یک بار دانلود دیگری و به ترتیب 1 تا 5 مگابایت شروع کنید.
با پیروی از این اصل، دانلودهای بزرگ - مانند فایل های ویدئویی - باید به صورت تکه تکه در فواصل زمانی معین (هر 2 تا 5 دقیقه) بارگیری شوند و عملاً فقط داده های ویدیویی که احتمالاً در چند دقیقه آینده مشاهده می شوند، از قبل واکشی شوند.
یک راه حل این است که زمانبندی دانلود کامل فقط در صورت اتصال به Wi-Fi و احتمالاً فقط زمانی که دستگاه در حال شارژ است انجام شود. WorkManager API دقیقاً از این مورد استفاده میکند و به شما این امکان را میدهد تا کارهای پسزمینه را محدود کنید تا زمانی که دستگاه با معیارهای تعیینشده توسط توسعهدهنده، مانند شارژ کردن و اتصال به Wi-Fi مطابقت داشته باشد.
قبل از درخواست، اتصال را بررسی کنید
جستجوی سیگنال سلولی یکی از کم مصرف ترین عملیات در دستگاه تلفن همراه است. بهترین روش برای درخواستهای آغاز شده توسط کاربر این است که ابتدا اتصال را با استفاده از ConnectivityManager
بررسی کنید، همانطور که در وضعیت اتصال مانیتور و اندازهگیری اتصال نشان داده شده است. اگر شبکه وجود نداشته باشد، برنامه میتواند با مجبور نکردن رادیو تلفن همراه به جستجو در باتری صرفهجویی کند. سپس میتوان درخواست را برنامهریزی کرد و به صورت دستهای با سایر درخواستها هنگام برقراری اتصال، انجام داد.
اتصالات استخر
یک استراتژی اضافی که میتواند علاوه بر دستهبندی و واکشی اولیه به شما کمک کند، تجمیع اتصالات شبکه برنامه شما است.
به طور کلی استفاده مجدد از اتصالات شبکه موجود کارآمدتر از راه اندازی اتصالات جدید است. استفاده مجدد از اتصالات همچنین به شبکه این امکان را می دهد که به طور هوشمندانه تری به ازدحام و مسائل مربوط به داده های شبکه واکنش نشان دهد.
HttpURLConnection
و اکثر کلاینتهای HTTP، مانند OkHttp ، به طور پیشفرض، ادغام اتصال و استفاده مجدد از یک اتصال را برای چندین درخواست فعال میکنند.
جمع بندی کنید و به آینده نگاه کنید
در این بخش، چیزهای زیادی در مورد رادیو بیسیم و چند استراتژی یاد گرفتید که میتوانید به طور گسترده از آنها برای ارائه تجربه کاربری سریع و پاسخگو و در عین حال کاهش مصرف باتری استفاده کنید.
در بخش بعدی، نگاهی مفصل به سه نوع متمایز از تعاملات شبکهای که در اکثر برنامهها رایج است، خواهیم داشت. شما درایورهای هر یک از این انواع و همچنین تکنیکها و APIهای مدرن برای مدیریت موثر این تعاملات را خواهید آموخت.
،استفاده از رادیو بی سیم برای انتقال داده به طور بالقوه یکی از مهم ترین منابع تخلیه باتری برنامه شما است. برای به حداقل رساندن تخلیه باتری مرتبط با فعالیت شبکه، بسیار مهم است که بدانید مدل اتصال شما چگونه بر سخت افزار رادیویی زیرین تأثیر می گذارد.
این بخش دستگاه حالت رادیویی بی سیم را معرفی می کند و نحوه تعامل مدل اتصال برنامه شما با آن را توضیح می دهد. سپس چندین تکنیک ارائه می دهد که در صورت رعایت آنها، به حداقل رساندن اثر مصرف داده برنامه شما بر روی باتری کمک می کند.
ماشین حالت رادیویی
رادیو بیسیم روی دستگاه کاربر شما دارای ویژگیهای داخلی ذخیرهسازی انرژی است که به کاهش میزان مصرف باتری کمک میکند. هنگامی که رادیو بی سیم به طور کامل فعال است، انرژی قابل توجهی مصرف می کند، اما در حالت غیرفعال یا در حالت آماده به کار، رادیو انرژی بسیار کمی مصرف می کند.
یکی از عوامل مهمی که باید به خاطر بسپارید این است که رادیو نمی تواند فوراً از حالت آماده به کار به حالت کاملاً فعال حرکت کند. یک دوره تاخیر در ارتباط با "روشن کردن" رادیو وجود دارد. بنابراین، باتری از حالتهای انرژی بالاتر به حالتهای انرژی پایینتر به آرامی تغییر میکند تا در صورت عدم استفاده، در مصرف انرژی صرفهجویی کند و در عین حال تلاش برای به حداقل رساندن تأخیر مرتبط با "روشن کردن" رادیو.
ماشین حالت برای یک رادیو شبکه معمولی 3G از سه حالت انرژی تشکیل شده است:
- قدرت کامل : زمانی که اتصال فعال است استفاده می شود و به دستگاه امکان می دهد داده ها را با بالاترین سرعت ممکن انتقال دهد.
- کم مصرف : حالت متوسطی که مصرف انرژی باتری را تا حدود 50 درصد کاهش می دهد.
- Standby : حالت حداقل مصرف انرژی که در طی آن هیچ اتصال شبکه ای فعال نیست.
در حالی که حالت های کم و آماده به کار باتری کمتری را تخلیه می کنند، همچنین تاخیر قابل توجهی را در درخواست های شبکه ایجاد می کنند. بازگشت به حالت کامل از حالت کم حدود 1.5 ثانیه طول می کشد و حرکت از حالت آماده به کار به حالت کامل می تواند بیش از 2 ثانیه طول بکشد.
برای به حداقل رساندن تأخیر، ماشین حالت از تأخیر برای به تعویق انداختن انتقال به حالتهای انرژی پایینتر استفاده میکند. شکل 1 از زمان بندی AT&T برای یک رادیو 3G معمولی استفاده می کند.
ماشین حالت رادیویی در هر دستگاه، به ویژه تاخیر انتقال مرتبط ("زمان دم") و تاخیر راه اندازی، بر اساس فناوری رادیویی بی سیم مورد استفاده (3G، LTE، 5G، و غیره) متفاوت خواهد بود و توسط دستگاه تعریف و پیکربندی می شود. شبکه حاملی که دستگاه روی آن کار می کند.
این صفحه یک ماشین حالت نماینده را برای یک رادیو بی سیم معمولی 3G، بر اساس داده های ارائه شده توسط AT&T توصیف می کند. با این حال، اصول کلی و بهترین شیوه های حاصل برای همه پیاده سازی های رادیویی بی سیم قابل اجرا هستند.
این رویکرد به ویژه برای مرور وب موبایل معمولی مؤثر است زیرا از تأخیر ناخواسته در هنگام مرور وب توسط کاربران جلوگیری می کند. زمان نسبتاً کم دم همچنین تضمین می کند که پس از پایان جلسه مرور، رادیو می تواند به حالت انرژی پایین تر حرکت کند.
متأسفانه، این رویکرد میتواند به برنامههای ناکارآمد در سیستمعاملهای مدرن گوشیهای هوشمند مانند اندروید منجر شود، جایی که برنامهها هم در پیشزمینه (جایی که تأخیر مهم است) و هم در پسزمینه (جایی که عمر باتری باید در اولویت قرار گیرد) اجرا میشوند.
چگونه برنامهها بر دستگاه حالت رادیویی تأثیر میگذارند
هر بار که یک اتصال شبکه جدید ایجاد می کنید، رادیو به حالت قدرت کامل منتقل می شود. در مورد ماشین حالت رادیویی معمولی 3G که قبلاً توضیح داده شد، در تمام مدت انتقال شما - به اضافه 5 ثانیه زمان اضافی - و به دنبال آن 12 ثانیه در حالت کم انرژی، در قدرت کامل باقی می ماند. بنابراین برای یک دستگاه معمولی 3G، هر جلسه انتقال داده باعث می شود رادیو حداقل 18 ثانیه انرژی بگیرد.
در عمل، این بدان معناست که برنامهای که یک ثانیه انتقال داده، سه بار در دقیقه انجام میدهد، رادیو بیسیم را همیشه فعال نگه میدارد و درست زمانی که وارد حالت آماده به کار میشود، آن را به قدرت بالا برمیگرداند.
در مقایسه، اگر همان برنامه انتقال دادههای خود را به صورت بستهبندی کند و هر دقیقه یک انتقال سه ثانیهای را اجرا کند، این کار رادیو را در مجموع تنها 20 ثانیه در هر دقیقه در حالت پرتوان نگه میدارد. این به رادیو اجازه می دهد در هر دقیقه 40 ثانیه در حالت آماده به کار باشد و در نتیجه مصرف باتری به میزان قابل توجهی کاهش یابد.
تکنیک های بهینه سازی
اکنون که متوجه شدید که دسترسی به شبکه چگونه بر عمر باتری تأثیر میگذارد، بیایید در مورد چند نکته صحبت کنیم که میتوانید برای کمک به کاهش تخلیه باتری انجام دهید و در عین حال تجربه کاربری سریع و روانی را نیز ارائه دهید.
بسته های انتقال داده
همانطور که در بخش قبل گفته شد، بستهبندی انتقال دادهها به گونهای که کمتر دادههای بیشتری را انتقال دهید، یکی از بهترین راهها برای بهبود کارایی باتری است.
البته اگر برنامه شما نیاز به دریافت یا ارسال فوری داده در پاسخ به اقدام کاربر داشته باشد، همیشه این کار امکان پذیر نیست. میتوانید با پیشبینی و واکشی از قبل دادهها، این موضوع را کاهش دهید. سناریوهای دیگر، مانند ارسال گزارشها یا تجزیه و تحلیلها به یک سرور و سایر انتقالهای داده غیر فوری و غیر فوری که از طریق برنامه شروع میشود، برای دستهبندی و بستهبندی بسیار مناسب هستند. برای نکاتی درباره زمانبندی انتقالهای شبکه پسزمینه ، به بهینهسازی وظایف آغاز شده توسط برنامه مراجعه کنید.
داده ها را از قبل واکشی کنید
واکشی اولیه داده ها روش موثر دیگری برای کاهش تعداد جلسات انتقال داده مستقل است که برنامه شما اجرا می کند. با واکشی اولیه، زمانی که کاربر اقدامی را در برنامه شما انجام میدهد، برنامه پیشبینی میکند که به احتمال زیاد چه دادههایی برای سری بعدی اقدامات کاربر مورد نیاز خواهد بود و آن دادهها را به صورت پشت سر هم، از طریق یک اتصال، با ظرفیت کامل واکشی میکند.
با بارگذاری جلوی انتقالهای خود، تعداد فعالسازیهای رادیویی مورد نیاز برای دانلود دادهها را کاهش میدهید. در نتیجه، نه تنها عمر باتری را حفظ می کنید، بلکه تأخیر را نیز بهبود می بخشید، پهنای باند مورد نیاز را کاهش می دهید و زمان دانلود را کاهش می دهید.
واکشی اولیه همچنین با به حداقل رساندن تأخیر درون برنامه ناشی از انتظار برای تکمیل دانلودها قبل از انجام یک عمل یا مشاهده داده، تجربه کاربری بهبود یافته ای را فراهم می کند.
در اینجا یک مثال عملی است.
یک خبرخوان
بسیاری از برنامههای خبری تلاش میکنند تا پهنای باند را با دانلود سرفصلها تنها پس از انتخاب دستهبندی، مقالات کامل تنها زمانی که کاربر بخواهد آنها را بخواند، و تصاویر بندانگشتی را درست زمانی که به نمایش در میآیند، کاهش دهند.
با استفاده از این رویکرد، رادیو مجبور میشود برای اکثر جلسات اخبارخوانی کاربران، در حالی که سرفصلها را مرور میکنند، دستهها را تغییر میدهند و مقالات را میخوانند، فعال باقی بماند. نه تنها این، تغییر مداوم بین حالات انرژی منجر به تأخیر قابل توجهی در هنگام تعویض دسته ها یا خواندن مقالات می شود.
یک رویکرد بهتر این است که مقدار معقولی از دادهها را در هنگام راهاندازی از قبل واکشی کنید، که با اولین مجموعه از سرفصلها و تصاویر کوچک اخبار شروع میشود - تضمین زمان راهاندازی با تأخیر کم - و ادامه با سرفصلها و ریز عکسهای باقیمانده، و همچنین متن مقاله برای هر یک. مقاله حداقل از فهرست سرفصل اولیه موجود است.
جایگزین دیگر این است که هر عنوان، تصویر کوچک، متن مقاله، و احتمالاً حتی تصاویر کامل مقاله را از قبل واکشی کنید—معمولاً در پسزمینه در یک برنامه از پیش تعیینشده. این رویکرد خطر صرف پهنای باند و عمر باتری قابل توجهی را برای دانلود محتوایی که هرگز استفاده نشده است به همراه دارد، بنابراین باید با احتیاط اجرا شود.
ملاحظات اضافی
در حالی که واکشی اولیه داده ها دارای مزایای زیادی است، استفاده از واکشی اولیه بیش از حد تهاجمی نیز خطر افزایش مصرف باتری و استفاده از پهنای باند - و همچنین سهمیه دانلود - را با دانلود داده هایی که استفاده نمی شود، ایجاد می کند. همچنین مهم است که اطمینان حاصل شود که واکشی اولیه راه اندازی برنامه را به تاخیر نمی اندازد، در حالی که برنامه منتظر می ماند تا واکشی اولیه تکمیل شود. از نظر عملی، این ممکن است به معنای پردازش تدریجی دادهها یا آغاز انتقالهای متوالی باشد، به گونهای که دادههای مورد نیاز برای راهاندازی برنامه ابتدا دانلود و پردازش شوند.
اینکه چگونه دادهها را به طور تهاجمی واکشی میکنید به اندازه دادههایی که دانلود میشوند و احتمال استفاده از آنها بستگی دارد. به عنوان یک راهنمای تقریبی، بر اساس ماشین حالت که قبلاً توضیح داده شد، برای دادههایی که 50% احتمال استفاده در جلسه کاربر فعلی دارند، معمولاً میتوانید حدود 6 ثانیه (تقریباً 1 تا 2 مگابایت) قبل از هزینه احتمالی واکشی اولیه برای شروع، دانلود داده های استفاده نشده با صرفه جویی بالقوه عدم دانلود آن داده مطابقت دارد.
به طور کلی، واکشی از قبل داده ها به گونه ای عمل خوبی است که فقط باید هر 2 تا 5 دقیقه یک بار دانلود دیگری و به ترتیب 1 تا 5 مگابایت شروع کنید.
با پیروی از این اصل، دانلودهای بزرگ - مانند فایل های ویدئویی - باید به صورت تکه تکه در فواصل زمانی معین (هر 2 تا 5 دقیقه) بارگیری شوند و عملاً فقط داده های ویدیویی که احتمالاً در چند دقیقه آینده مشاهده می شوند، از قبل واکشی شوند.
یک راه حل این است که زمانبندی دانلود کامل فقط در صورت اتصال به Wi-Fi و احتمالاً فقط زمانی که دستگاه در حال شارژ است انجام شود. WorkManager API دقیقاً از این مورد استفاده میکند و به شما این امکان را میدهد تا کارهای پسزمینه را محدود کنید تا زمانی که دستگاه با معیارهای تعیینشده توسط توسعهدهنده، مانند شارژ کردن و اتصال به Wi-Fi مطابقت داشته باشد.
قبل از درخواست، اتصال را بررسی کنید
جستجوی سیگنال سلولی یکی از کم مصرف ترین عملیات در دستگاه تلفن همراه است. بهترین روش برای درخواستهای آغاز شده توسط کاربر این است که ابتدا اتصال را با استفاده از ConnectivityManager
بررسی کنید، همانطور که در وضعیت اتصال مانیتور و اندازهگیری اتصال نشان داده شده است. اگر شبکه وجود نداشته باشد، برنامه میتواند با مجبور نکردن رادیو تلفن همراه به جستجو در باتری صرفهجویی کند. سپس میتوان درخواست را برنامهریزی کرد و به صورت دستهای با سایر درخواستها هنگام برقراری اتصال، انجام داد.
اتصالات استخر
یک استراتژی اضافی که میتواند علاوه بر دستهبندی و واکشی اولیه به شما کمک کند، تجمیع اتصالات شبکه برنامه شما است.
به طور کلی استفاده مجدد از اتصالات شبکه موجود کارآمدتر از راه اندازی اتصالات جدید است. استفاده مجدد از اتصالات همچنین به شبکه این امکان را می دهد که به طور هوشمندانه تری به ازدحام و مسائل مربوط به داده های شبکه واکنش نشان دهد.
HttpURLConnection
و اکثر کلاینتهای HTTP، مانند OkHttp ، به طور پیشفرض، ادغام اتصال و استفاده مجدد از یک اتصال را برای چندین درخواست فعال میکنند.
جمع بندی کنید و به آینده نگاه کنید
در این بخش، چیزهای زیادی در مورد رادیو بیسیم و چند استراتژی یاد گرفتید که میتوانید به طور گسترده از آنها برای ارائه تجربه کاربری سریع و پاسخگو و در عین حال کاهش مصرف باتری استفاده کنید.
در بخش بعدی ، نگاهی دقیق به سه نوع متمایز از تعامل شبکه مشترک برای اکثر برنامه ها خواهیم داشت. برای مدیریت کارآمد این تعامل ، رانندگان را برای هر یک از این نوع و همچنین تکنیک های مدرن و API ها یاد خواهید گرفت.
،استفاده از رادیو بی سیم برای انتقال داده ها به طور بالقوه یکی از مهمترین منابع تخلیه باتری برنامه شما است. برای به حداقل رساندن تخلیه باتری مرتبط با فعالیت شبکه ، بسیار مهم است که بدانید مدل اتصال شما چگونه بر سخت افزار رادیویی زیرین تأثیر می گذارد.
در این بخش دستگاه حالت رادیویی بی سیم معرفی شده و توضیح می دهد که چگونه مدل اتصال برنامه شما با آن تعامل دارد. سپس چندین تکنیک ارائه می دهد که در صورت دنبال کردن ، به حداقل رساندن تأثیر مصرف داده های برنامه شما بر روی باتری کمک می کند.
دستگاه رادیو حالت
رادیو بی سیم در دستگاه کاربر شما دارای ویژگی های صرفه جویی در برق است که به به حداقل رساندن میزان باتری مصرف شده کمک می کند. در صورت فعال بودن ، رادیو بی سیم از قدرت قابل توجهی استفاده می کند ، اما در هنگام غیرفعال یا در حالت آماده به کار ، رادیو از قدرت بسیار کمی استفاده می کند.
یکی از عوامل مهمی که باید به خاطر بسپارید این است که رادیو نمی تواند از حالت آماده به کار به فوراً فعال شود. یک دوره تأخیر در ارتباط با "قدرت" رادیو وجود دارد. بنابراین انتقال باتری از حالت های انرژی بالاتر به حالت انرژی به آرامی کاهش می یابد تا بتواند در هنگام استفاده از انرژی در هنگام تلاش برای به حداقل رساندن تأخیر مرتبط با "قدرت بالا بردن" رادیو به حداقل برسد.
دستگاه دولتی برای یک رادیو شبکه 3G معمولی از سه حالت انرژی تشکیل شده است:
- قدرت کامل : در هنگام فعال بودن اتصال استفاده می شود و به دستگاه اجازه می دهد داده ها را با بالاترین نرخ ممکن خود منتقل کند.
- قدرت کم : حالت میانی که مصرف باتری را حدود 50 ٪ کاهش می دهد.
- آماده به کار : حداقل حالت مصرف کننده برق که در طی آن هیچ اتصال شبکه ای فعال نیست.
در حالی که حالت های کم و آماده به کار باتری قابل توجهی کمتری دارند ، اما تأخیر قابل توجهی را به درخواست های شبکه معرفی می کنند. بازگشت به قدرت کامل از حالت پایین حدود 1.5 ثانیه طول می کشد و حرکت از حالت آماده به کار به تمام توان می تواند بیش از 2 ثانیه طول بکشد.
برای به حداقل رساندن تأخیر ، دستگاه دولت از تأخیر برای به تعویق انداختن انتقال به حالتهای انرژی کمتری استفاده می کند. شکل 1 از زمان بندی AT&T برای یک رادیو معمولی 3G استفاده می کند.
دستگاه رادیو حالت در هر دستگاه ، به ویژه تأخیر انتقال مرتبط ("زمان دم") و تأخیر در راه اندازی ، بر اساس فناوری رادیو بی سیم به کار رفته (3G ، LTE ، 5G و غیره) متفاوت خواهد بود و توسط شبکه حامل که دستگاه در آن کار می کند.
در این صفحه یک دستگاه حالت نماینده برای یک رادیو بی سیم معمولی 3G ، بر اساس داده های ارائه شده توسط AT&T شرح داده شده است. با این حال ، اصول کلی و بهترین شیوه های حاصل برای همه اجرای رادیو بی سیم کاربرد دارد.
این رویکرد به ویژه برای مرور وب موبایل معمولی مؤثر است زیرا در حالی که کاربران در وب مرور می کنند ، از تأخیر ناخواسته جلوگیری می کند. زمان نسبتاً کم دم همچنین تضمین می کند که پس از پایان جلسه مرور ، رادیو می تواند به حالت انرژی کمتری منتقل شود.
متأسفانه ، این رویکرد می تواند منجر به برنامه های ناکارآمد در سیستم عامل های مدرن تلفن های هوشمند مانند Android شود ، جایی که برنامه ها هم در پیش زمینه (جایی که تأخیر مهم است) و در پس زمینه (جایی که باید عمر باتری در اولویت قرار داشته باشد) اجرا می شوند.
چگونه برنامه ها بر دستگاه حالت رادیو تأثیر می گذارند
هر بار که یک اتصال شبکه جدید ایجاد می کنید ، رادیو به حالت قدرت کامل منتقل می شود. در مورد دستگاه معمولی رادیویی معمولی 3G که در ابتدا توضیح داده شد ، برای مدت زمان انتقال شما - به علاوه 5 ثانیه اضافی از زمان دم - که 12 ثانیه در حالت کم انرژی دنبال می شود ، در قدرت کامل باقی خواهد ماند. بنابراین برای یک دستگاه معمولی 3G ، هر جلسه انتقال داده باعث می شود رادیو حداقل 18 ثانیه انرژی را به خود جلب کند.
در عمل ، این بدان معنی است که برنامه ای که باعث انتقال داده یک ثانیه ، سه بار در دقیقه می شود ، رادیو بی سیم را به طور همیشگی فعال نگه می دارد و دقیقاً همانطور که وارد حالت آماده به کار می شود ، آن را به قدرت بالا منتقل می کند.
برای مقایسه ، اگر همان برنامه انتقال داده های خود را انجام دهد ، هر دقیقه یک انتقال سه ثانیه ای را انجام دهد ، این امر باعث می شود رادیو در حالت قدرت بالا برای کل فقط 20 ثانیه در هر دقیقه باشد. این امر باعث می شود رادیو به مدت 40 ثانیه از هر دقیقه در حالت آماده باش قرار بگیرد و در نتیجه باعث کاهش قابل توجه در مصرف باتری شود.
تکنیک های بهینه سازی
اکنون که می فهمید که دسترسی به شبکه چگونه بر عمر باتری تأثیر می گذارد ، بیایید در مورد چند مورد صحبت کنیم که می توانید برای کمک به کاهش تخلیه باتری انجام دهید ، ضمن اینکه تجربه کاربر سریع و روان را نیز فراهم می کند.
انتقال داده های بسته
همانطور که در بخش قبلی بیان شده است ، انتقال داده های خود را به گونه ای که داده های بیشتری را انتقال می دهید ، اغلب یکی از بهترین راه ها برای بهبود راندمان باتری است.
البته ، اگر برنامه شما نیاز به دریافت یا ارسال داده ها بلافاصله در پاسخ به اقدام کاربر داشته باشد ، این کار همیشه امکان پذیر نیست. با پیش بینی و پیش بینی داده ها می توانید این کار را کاهش دهید. سناریوهای دیگر ، مانند ارسال سیاههها یا تجزیه و تحلیل به یک سرور و انتقال داده های دیگر ، غیر فوری ، برنامه های کاربردی ، خود را بسیار خوب به دسته بندی و بسته بندی وام می دهند. برای راهنمایی در مورد برنامه ریزی انتقال شبکه پس زمینه ، به بهینه سازی وظایف برنامه ریزی شده مراجعه کنید.
داده ها را از قبل واکشی کنید
پیش بینی داده ها یکی دیگر از روشهای مؤثر برای کاهش تعداد جلسات انتقال داده مستقل است که برنامه شما اجرا می کند. با استفاده از پیش بینی ، هنگامی که کاربر در برنامه شما عملی را انجام می دهد ، برنامه پیش بینی می کند که به احتمال زیاد به داده ها برای سری بعدی اقدامات کاربر مورد نیاز خواهد بود و داده ها را در یک پشت سر هم ، بیش از یک اتصال واحد ، با ظرفیت کامل دریافت می کند.
با بارگیری جلوی نقل و انتقالات خود ، تعداد فعال سازی های رادیویی مورد نیاز برای بارگیری داده ها را کاهش می دهید. در نتیجه ، شما نه تنها عمر باتری را حفظ می کنید ، بلکه تأخیر را نیز بهبود می بخشید ، پهنای باند مورد نیاز را پایین می آورید و زمان بارگیری را کاهش می دهید.
پیش بینی همچنین با به حداقل رساندن تأخیر در برنامه در برنامه ناشی از انتظار برای بارگیری قبل از انجام یک عمل یا مشاهده داده ، تجربه کاربری بهبود یافته ای را فراهم می کند.
در اینجا یک مثال عملی است.
یک خواننده خبر
بسیاری از برنامه های خبری سعی می کنند با بارگیری عناوین فقط پس از انتخاب یک دسته ، پهنای باند را کاهش دهند ، مقالات کامل فقط در شرایطی که کاربر بخواهد آنها را بخواند ، و تصاویر کوچک را درست همانطور که مشاهده می شود.
با استفاده از این رویکرد ، رادیو مجبور می شود برای اکثر جلسه اخبار کاربران فعال شود زیرا آنها عناوین را پیمایش می کنند ، دسته بندی ها را تغییر می دهند و مقالات را می خوانند. نه تنها این ، تغییر مداوم بین حالتهای انرژی منجر به تأخیر قابل توجهی هنگام تعویض دسته ها یا خواندن مقالات می شود.
یک رویکرد بهتر این است که مقدار معقول و منطقی از داده ها را در هنگام راه اندازی ، شروع کنید ، با اولین مجموعه از عناوین خبری و تصاویر کوچک-افزایش زمان راه اندازی با تأخیر کم-و ادامه با عناوین و تصاویر کوچک باقی مانده و همچنین متن مقاله برای هر یک مقاله موجود از حداقل لیست تیتر اصلی.
گزینه دیگر این است که از هر عنوانی ، تصویر کوچک ، متن مقاله و حتی تصاویر کامل مقاله - که بطور معمول در پس زمینه در یک برنامه از پیش تعیین شده استفاده می شود ، پیش بینی کنید. این رویکرد باعث می شود تا پهنای باند قابل توجهی و محتوای بارگیری باتری را که هرگز مورد استفاده قرار نمی گیرد ، هزینه کند ، بنابراین باید با احتیاط اجرا شود.
ملاحظات اضافی
در حالی که داده های پیش بینی مزایای زیادی را به همراه دارد ، استفاده از پیش بینی بسیار پرخاشگرانه نیز خطر افزایش تخلیه باتری و استفاده از پهنای باند - و همچنین سهمیه را بارگیری می کند - با بارگیری داده هایی که استفاده نمی شود. همچنین مهم است که اطمینان حاصل شود که پیش تنظیم برنامه راه اندازی برنامه را به تأخیر نمی اندازد در حالی که برنامه منتظر تکمیل پیش تنظیم است. از نظر عملی که ممکن است به معنای پردازش داده ها به تدریج یا شروع نقل و انتقالات متوالی در اولویت باشد به گونه ای که داده های مورد نیاز برای راه اندازی برنامه ابتدا بارگیری و پردازش می شوند.
چقدر پرخاشگرانه داده ها را به اندازه داده های بارگیری شده و احتمال استفاده از آن بستگی دارد. به عنوان یک راهنمای خشن ، بر اساس دستگاه دولتی که در ابتدا توضیح داده شده است ، برای داده هایی که احتمال استفاده از 50 ٪ در جلسه کاربر فعلی را دارند ، می توانید قبل از هزینه بالقوه حدود 6 ثانیه (تقریباً 1-2 مگابایت) پیش بینی کنید. بارگیری داده های بلااستفاده با پس انداز بالقوه عدم بارگیری آن داده ها مطابقت دارد.
به طور کلی ، این کار خوب است که داده ها را به گونه ای تنظیم کنید که فقط باید هر 2 تا 5 دقیقه و به ترتیب 1 تا 5 مگابایت بارگیری دیگری را آغاز کنید.
به دنبال این اصل ، بارگیری های بزرگ - از جمله پرونده های ویدیویی - باید در فواصل منظم (هر 2 تا 5 دقیقه) در تکه های بارگیری شود ، و به طور موثری فقط داده های ویدئویی را که احتمالاً در چند دقیقه آینده مشاهده می شود ، ترجیح می دهند.
یک راه حل این است که برنامه ریزی کامل را فقط در هنگام اتصال به Wi-Fi انجام دهید ، و احتمالاً فقط در هنگام شارژ دستگاه. API Workmanager دقیقاً از این مورد استفاده پشتیبانی می کند و به شما امکان می دهد کار پس زمینه را محدود کنید تا اینکه دستگاه معیارهای مشخص شده توسعه دهنده را برآورده کند ، مانند شارژ و اتصال به Wi-Fi.
قبل از درخواست، اتصال را بررسی کنید
جستجوی سیگنال سلولی یکی از بیشترین عملیات تخلیه در دستگاه تلفن همراه است. بهترین روش برای درخواست های مبتنی بر کاربر این است که ابتدا با استفاده از ConnectivityManager
، اتصال را بررسی کنید ، همانطور که در وضعیت اتصال مانیتور و اندازه گیری اتصال نشان داده شده است. اگر شبکه ای وجود نداشته باشد ، برنامه می تواند باتری را با مجبور کردن رادیو موبایل برای جستجو ذخیره کند. سپس درخواست می تواند هنگام برقراری اتصال در یک دسته با درخواست های دیگر انجام شود.
اتصالات استخر
یک استراتژی اضافی که می تواند علاوه بر دسته بندی و پیش بینی کمک کند ، جمع آوری اتصالات شبکه برنامه شما است.
به طور کلی استفاده مجدد از اتصالات شبکه موجود نسبت به شروع موارد جدید کارآمدتر است. استفاده مجدد از اتصالات همچنین به شبکه اجازه می دهد تا با توجه به مسائل مربوط به احتقان و داده های مربوط به شبکه ، واکنش بیشتری نشان دهند.
HttpURLConnection
و بیشتر مشتری های HTTP ، مانند OKHTTP ، به طور پیش فرض ، استخر اتصال را فعال می کنند و از همان اتصال برای درخواست های متعدد استفاده می کنند.
جمع بندی کنید و به آینده نگاه کنید
در این بخش ، شما در مورد رادیو بی سیم و برخی از استراتژی ها چیزهای زیادی آموخته اید که می توانید به طور گسترده ای برای ارائه یک تجربه سریع و پاسخگو کاربر ضمن کاهش تخلیه باتری استفاده کنید.
در بخش بعدی ، نگاهی دقیق به سه نوع متمایز از تعامل شبکه مشترک برای اکثر برنامه ها خواهیم داشت. برای مدیریت کارآمد این تعامل ، رانندگان را برای هر یک از این نوع و همچنین تکنیک های مدرن و API ها یاد خواهید گرفت.