صرفه جویی در مصرف برق و باتری

بهره وری انرژی به ویژه در سیستم عامل Wear مهم است. اصول طراحی Wear OS به طور قابل توجهی بر مصرف انرژی دستگاه تمرکز دارد زیرا ساعت یک فرم کوچک است که برای تعاملات کوتاه طراحی شده است.

در مقایسه با دستگاه‌های همراه بزرگ‌تر، دستگاه‌های Wear OS باتری‌های کوچک‌تری دارند، بنابراین هر گونه تخلیه باتری بیشتر قابل توجه است. علاوه بر این، شارژ کردن دستگاه Wear OS در مقایسه با یک دستگاه تلفن همراه، به زحمت بیشتری نیاز دارد. در حالی که کاربران می توانند دستگاه های تلفن همراه خود را در فواصل زمانی مختلف در طول روز شارژ کنند، آنها باید قبل از شارژ دستگاه، یک دستگاه Wear OS را از بدن خود جدا کنند.

برای بهبود بهره وری انرژی برنامه خود، بهترین شیوه های طراحی را دنبال کنید:

  • طراحی برنامه شما باید به خوبی از عامل فرم Wear OS استفاده کند. این برنامه نباید مستقیماً برنامه تلفن همراه شما را کپی کند.
  • از برنامه تلفن همراه موجود خود برای کمک به موارد خاص استفاده کنید. به عنوان مثال، اینترنت و همگام سازی در ساعت گران است. در نظر بگیرید که آیا دستگاه تلفن همراه می‌تواند کارهای سنگین را انجام دهد یا خیر، و دستگاه Wear OS تغییراتی را در داده‌ها دریافت می‌کند.
  • موارد استفاده خود را برای تعاملات کوتاه‌تر طراحی کنید.
  • در نظر بگیرید که از کدام رویدادهای Wear OS استفاده می‌کنید و این رویدادها چند بار رخ می‌دهند.
  • در صورت امکان، کار برنامه خود را تا زمانی که ساعت شارژ شود به تعویق بیندازید. این امر به ویژه برای کارهایی که داده فشرده هستند، مانند همگام سازی داده ها، و سازماندهی پایگاه های داده اعمال می شود.

    اگر دستگاه در حال شارژ است و اتصال Wi-Fi دارد، کارهایی را برای واکشی از پیش داده ها، تصاویر و به روز رسانی هایی که کاربر احتمالاً می خواهد در برنامه شما ببیند، برنامه ریزی کنید.

این راهنمای پاور به شما کمک می‌کند بفهمید سیستم چه زمانی و چگونه برنامه شما را اجرا می‌کند و چگونه می‌توانید زمان اجرا و تخلیه باتری برنامه خود را محدود کنید. برای کسب اطلاعات بیشتر در مورد نحوه انجام اقدامات خاص - مانند بارگیری یک برنامه یا پیمایش در فهرست - از راهنمایی‌های مربوط به عملکرد، مانند راهنمای عملکرد Compose on Wear OS دیدن کنید.

نظارت بر مصرف باتری در طول زمان

برای تجزیه و تحلیل آمار باتری دستگاه Wear OS که برنامه شما را اجرا می کند، دستور زیر را در پنجره ترمینال در دستگاه توسعه خود وارد کنید:

adb shell dumpsys batterystats

کتابخانه ای در GitHub دارای یک تجزیه کننده آمار باتری است که می تواند همراه با این دستور اجرا شود.

رویدادهایی که عمر باتری را تحت تأثیر قرار می دهند

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

جدول زیر تأثیر نسبی روی عمر باتری را در چندین رویداد رایج در برنامه‌های Wear OS نشان می‌دهد. میزان دقیق تخلیه برق در بین دستگاه ها متفاوت است.

رویداد تاثیر بر عمر باتری نحوه کاهش
به شبکه، از جمله LTE و Wi-Fi دسترسی داشته باشید خیلی بالا دسترسی غیر ضروری به شبکه را تا زمانی که دستگاه شارژ شود به تعویق بیندازید.
صفحه را روشن کنید و حالت تعاملی را شروع کنید بالا کاربر را تشویق نکنید که صفحه نمایش را بیش از حد لازم روشن نگه دارد. تجربه‌ای ارائه کنید که از حالت همیشه روشن استفاده می‌کند که به عنوان حالت محیطی نیز شناخته می‌شود.
به سنسور GPS دسترسی پیدا کنید بالا در صورت امکان، صبر کنید تا کاربر درخواست دسترسی به GPS را بدهد.
مصرف CPU را بالا نگه دارید بالا جریان ها را با استفاده از Jetpack Compose مصرف کنید .
به سنسور ضربان قلب دسترسی داشته باشید متوسط هنگام دریافت تماس از API حسگر، مانند هنگام استفاده از خدمات بهداشتی در Wear OS، از زمان بیداری پردازنده استفاده کنید.
از طریق بلوتوث به دستگاه دیگری دسترسی داشته باشید متوسط جلسات را کوتاه نگه دارید
یک قفل بیدار نگه دارید متوسط ایجاد دستی wakelocks را کاهش دهید و از WorkManager استفاده کنید.

زمان روشن شدن صفحه نمایش را به حداقل برسانید

در برنامه Wear OS خود، این اصول استفاده از صفحه نمایش را دنبال کنید:

  • قفل صفحه نمایش: تا حد امکان از آن اجتناب کنید. برای آزمایش، نمایشگر همیشه روشن را در تنظیمات سیستم خاموش کنید و ببینید که آیا صفحه نمایش در بازه زمانی خاموش می شود یا خیر.
  • انیمیشن‌ها: انیمیشن‌های پیچیده را به حداقل برسانید و در عوض بر روی انتقال‌های کوتاه تمرکز کنید تا ظاهر حرفه‌ای‌تری داشته باشید. به ویژه از انیمیشن ها و حلقه های طولانی مدت خودداری کنید. اگر یک حلقه لازم است، یک مکث بین حلقه‌ها اضافه کنید که حداقل به اندازه خود انیمیشن باشد.
  • زمان بیداری در حالت محیطی: در صورت لزوم از همیشه روشن پشتیبانی کنید، مانند موارد استفاده تناسب اندام. اگر برنامه شما به همیشه روشن نیاز دارد، بررسی کنید وقتی دستگاه در حالت محیطی است، برنامه شما کارهای زیر را انجام دهد:

    • درصد روشنایی صفحه نمایش دستگاه را کاهش می دهد.
    • انیمیشن ها را نشان نمی دهد.
    • محتوای صفحه را به‌روزرسانی نمی‌کند، مگر در طول یک تماس onAmbientUpdate() .

استفاده از CPU را به حداقل برسانید

در برنامه Wear OS خود، این اصول استفاده از CPU را دنبال کنید:

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

wakelock ها را به حداقل برسانید

در بیشتر موارد، از هرگونه عملیاتی که مانع از خوابیدن برنامه شما می‌شود، مانند قفل‌های بیداری اجتناب کنید. به عنوان مثال، در برنامه های سلامت و تناسب اندام، تمرینات طولانی مدت نیازی به قفل خواب ندارند. هنگام دریافت تماس از API حسگر، مانند هنگام استفاده از خدمات بهداشتی در Wear OS، از زمان بیداری پردازنده استفاده کنید.

مواردی وجود دارد که دریافت wakelock اشکالی ندارد، مانند زمانی که برنامه شما یکی از موارد زیر را انجام می دهد:

  • رسانه را در پس زمینه پخش می کند.
  • از WorkManager یا JobScheduler استفاده می کند. (سیستم هنگام اجرای کار در پس‌زمینه، یک wakelock از طرف شما نگه می‌دارد.)

Battery Historian به شما این امکان را می دهد که بتوانید رخدادهای تکی wakelockهای طولانی و همچنین خلاصه ای از تعداد کل و مدت زمان نگه داشتن wakelock را مشاهده کنید. تعداد و مدت زمان wakelockهایی را که برنامه شما نگه می دارد بررسی کنید و این اطلاعات را با الگوهای استفاده تعاملی برنامه خود مقایسه کنید:

  • بیدار شدن های غیرمنتظره را بررسی کنید.
  • اگر مدت زمان طولانی‌تر از حد انتظار است، در نظر بگیرید که آیا کار بر اساس برخی وابستگی‌ها، مانند در دسترس بودن شبکه، مسدود شده است یا خیر.

نحوه غیرفعال شدن برنامه شما را بررسی کنید

در نظر بگیرید که برنامه فعال هنگام رخ دادن رویدادهای کلیدی دستگاه، مانند موارد زیر، چه کاری انجام می دهد:

  • صفحه خاموش می شود و دستگاه وارد حالت محیطی می شود.
  • برنامه با کشیدن انگشت کنار گذاشته شده است.

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

پروفیل انرژی

Energy Profiler با انتخاب View > Tool Windows > Profiler در منوی Android Studio قابل دسترسی است:

  1. با خاموش شدن صفحه و ورود دستگاه به حالت محیطی، ردیابی سیستم را بررسی کنید.
  2. به دنبال هر کاری که ادامه دارد و سطح استفاده از CPU دستگاه را جستجو کنید.

پرفتو

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

رویدادهای سفارشی را برای علامت گذاری رویدادهای مهم برنامه خود، از جمله رویدادهای خاص دامنه، تعریف کنید. برای یک برنامه رسانه، این کار شامل کارهایی مانند واکشی لیست‌های پخش، دانلود یک آیتم رسانه خاص، شروع پخش و توقف پخش می‌شود. با تعریف این رویدادها، می‌توانید آن‌ها را در Perfetto ببینید و زمان‌بندی آن‌ها را با CPU و مصرف انرژی برنامه‌تان مقایسه کنید.

کارهای برنامه ریزی شده برنامه خود را تجزیه و تحلیل کنید

کارهای برنامه ریزی شده با استفاده از WorkManager به شما امکان می دهد کارهای پس زمینه را در برنامه خود انجام دهید. اگرچه برخی از کارهای پس‌زمینه باید دوره‌ای باشند، اما کارها را خیلی مکرر یا برای مدت طولانی اجرا نکنید، زیرا این کار می‌تواند باتری دستگاه را تخلیه کند.

از Battery Historian برای بررسی اجرای کارهای زمان‌بندی شده، هم به طور کلی ( آمار سیستم > آمار برنامه‌ریزی کار ) و هم توسط برنامه ( آمار برنامه > کار برنامه‌ریزی شده ) استفاده کنید. تعداد کل و مدت زمان کل را بررسی کنید:

  • اگر یک کار خیلی مکرر اجرا می شود، این فرکانس را کاهش دهید.
  • بررسی کنید که کل زمان اجرا با آنچه انتظار دارید مطابقت داشته باشد و به طور قابل توجهی بیشتر نباشد.

همچنین، نمودار Battery Historian را بررسی کنید و به هر ورودی JobScheduler نگاه کنید. هنگامی که نشانگر را روی یک ورودی خاص نگه می‌دارید، Battery Historian صاحب کار در حال اجرا را نشان می‌دهد. موارد زیر را در نظر بگیرید:

  • برای برنامه شما، مدت زمان اجرا باید منطقی باشد.
  • در نظر بگیرید که آیا کارها در حین اجرا شدن برنامه شما اتفاق می‌افتند یا اینکه آیا کارها نشان‌دهنده کار پس‌زمینه دوره‌ای هستند.

حسگرها

دستگاه‌های Wear OS دارای حسگرهای مختلفی مانند GPS هستند. در بیشتر موارد، به جای تعامل مستقیم با SensorManager ، از Health Services در Wear OS استفاده کنید. در بسیاری از موارد، Health Services به طور هوشمند داده ها را برای بهبود عملکرد باتری دسته بندی می کند.

برای تجزیه و تحلیل استفاده از حسگر در برنامه خود، دستور زیر را در پنجره ترمینال در دستگاه توسعه خود اجرا کنید:

adb shell dumpsys sensorservice

نتایج این دستور موارد زیر را نشان می دهد:

  • ثبت سنسورهای فعلی و قبلی
  • پیکربندی سنسور، از جمله دسته بندی در صورت تنظیم.
  • داده های نمونه گیری اخیر

تست لغو ثبت نام از سنسورها

برای بررسی اینکه آیا برنامه شما واکشی داده های حسگر را همانطور که انتظار می رود متوقف می کند یا خیر، سناریوهای زیر را آزمایش کنید:

  1. برنامه خود را تند بکشید و رد کنید.
  2. با کف دست خود روی صفحه ضربه بزنید. این کار یا صفحه نمایش را خاموش می کند یا صفحه را در حالت محیطی قرار می دهد.

از دستور ADB از بخش قبل استفاده کنید تا بررسی کنید که آیا سنسور به درستی به عنوان ثبت نشده نشان داده می شود.

لایه داده

هنگام استفاده از API لایه داده ، هر انتقال مقداری نیرو مصرف می کند. به ویژه، اگر از این API برای ارسال داده استفاده می کنید، برنامه شما باید برای دریافت داده ها بیدار شود. به این دلایل، در استفاده از این API محافظه کار باشید.

برخی از بهترین شیوه های اضافی برای استفاده از API لایه داده شامل موارد زیر است:

  • قبل از تنظیم شنونده با استفاده از WearableListenerService صبر کنید تا برنامه شما فعال شود.
  • به جای پیکربندی به‌روزرسانی‌های سریع، تغییرات وضعیت را انتقال دهید. این تغییرات حالت به دستگاه Wear OS امکان می‌دهد محاسبات داده‌های محلی را انجام دهد، مانند زمانی که جلسه تمرین شروع شد.

    فقط تغییرات وضعیتی را که رابط کاربری شما را به روز می کند، منتقل کنید. برای مثال، اگر صفحه فعالیت شما فقط «کیلومترهای دویده» را تا یک رقم اعشار نشان می‌دهد، هر بار که کاربر یک متر دیگر را به جلو می‌برد، تغییر وضعیت را به Wear OS ارسال نکنید.

برای تجزیه و تحلیل استفاده از API لایه داده در برنامه خود، دستور زیر را در پنجره ترمینال در دستگاه توسعه خود اجرا کنید:

adb shell dumpsys activity service WearableService

نتایج این دستور شامل موارد زیر است:

  • RpcService: به شما امکان می دهد با استفاده از MessageClient ببینید چند بار و کدام مسیرها فراخوانی می شوند.
  • DataService: به شما این امکان را می دهد که مشاهده کنید موارد داده با استفاده از DataClient چند بار تنظیم می شوند.

اپلیکیشن های سلامت و تناسب اندام

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

  • برای ExerciseClient ، از Battery Historian برای تأیید رفتار صحیح در حالت محیطی استفاده کنید. بررسی کنید که برنامه شما بیشتر از هر یا دو دقیقه بیدار نشود تا داده‌های ExerciseUpdate دریافت کند.
  • برای نظارت بر سلامت عمومی در تمام روز، از PassiveMonitoringClient استفاده کنید، همانطور که در راهنمای نحوه نظارت بر داده های سلامت و تناسب اندام در پس زمینه توضیح داده شده است.

کاشی ها و عوارض

اگر برنامه شما از یک کاشی یا یک پیچیدگی پشتیبانی می کند، این بهترین شیوه ها را دنبال کنید:

  • به‌روزرسانی خودکار را غیرفعال کنید یا نرخ تازه‌سازی را به ۲ ساعت یا بیشتر افزایش دهید.
  • از Firebase Cloud Messaging (FCM) یا کارهای برنامه ریزی شده مناسب برای ارسال به روز رسانی داده ها استفاده کنید. مراقب باشید از سرعت سریع به‌روزرسانی‌ها جلوگیری کنید، که می‌تواند باعث شود سیستم کارهای مکرر را با سرعت بیشتری نسبت به دسترسی کاربر یا پلت فرم به داده‌های مورد نیاز برای انجام آن کار برنامه‌ریزی کند.
  • زمانی که کاربر با آن تعاملی ندارد، کار را برای کاشی یا پیچیدگی خود برنامه ریزی نکنید.
  • از رویکردهای آفلاین اول استفاده کنید.
  • یک پایگاه داده واحد را در برنامه اصلی، کاشی‌ها و پیچیدگی‌های خود به اشتراک بگذارید. این کمک می‌کند تا داده‌ها در سطوح UI نیز ثابت بمانند.
{% کلمه به کلمه %} {% آخر کلمه %} {% کلمه به کلمه %} {% آخر کلمه %}