تُعدّ كفاءة استهلاك الطاقة مهمة بشكل خاص على Wear OS. تركّز مبادئ التصميم في Wear OS بشكل كبير على استخدام طاقة الجهاز لأنّ الساعة صغيرة الحجم ومخصّصة للتفاعلات القصيرة.
مقارنةً بالأجهزة الجوّالة الأكبر حجمًا، تحتوي أجهزة Wear OS على بطاريات أصغر حجمًا، لذا يكون استهلاك البطارية أكثر وضوحًا. بالإضافة إلى ذلك، يتطلّب شحن جهاز Wear OS جهدًا أكبر من شحن جهاز جوّال. على الرغم من أنّ المستخدمين يمكنهم شحن أجهزتهم الجوّالة على فترات مختلفة طوال اليوم، إلا أنّهم يحتاجون إلى خلع جهاز Wear OS قبل شحنه.
لتحسين كفاءة استهلاك الطاقة في تطبيقك، اتّبِع أفضل ممارسات التصميم التالية:
- يجب أن يستفيد تصميم تطبيقك من شكل جهاز Wear OS. ولا ينبغي أن ينسخ تطبيق الهاتف المحمول مباشرة.
- استخدام تطبيقك الحالي على الأجهزة الجوّالة للمساعدة في حالات استخدام معيّنة على سبيل المثال، يُعدّ الاتصال بالإنترنت والمزامنة على الساعة أمرًا مكلفًا، لذا ننصحك بالتفكير في ما إذا كان الجهاز الجوّال يمكنه تنفيذ المهام الصعبة، ويتلقّى جهاز Wear OS التغييرات في البيانات.
- صمِّم حالات الاستخدام لتكون تفاعلات أقصر.
- حدِّد أحداث Wear OS التي تستخدمها ومعدّل تكرارها.
أجِّل عمل تطبيقك إلى أن يتم شحن الساعة كلما أمكن ذلك. ينطبق هذا بشكل خاص على المهام التي تتطلّب معالجة كميات كبيرة من البيانات، مثل مزامنة البيانات وتنظيم قواعد البيانات.
إذا كان الجهاز قيد الشحن ومتصلاً بشبكة Wi-Fi، يمكنك جدولة المهام لجلب البيانات والصور والتحديثات التي من المحتمل أن يريد المستخدم رؤيتها في تطبيقك.
يساعدك دليل الطاقة هذا في فهم متى وكيف يشغّل النظام تطبيقك، وكيف يمكنك الحدّ من وقت تشغيل تطبيقك واستهلاك البطارية. لمزيد من المعلومات حول كيفية تنفيذ إجراءات معيّنة، مثل تحميل تطبيق أو الانتقال في قائمة، يمكنك الاطّلاع على الإرشادات المتعلّقة بالأداء، مثل دليل أداء Compose على Wear OS.
مراقبة استخدام البطارية مع مرور الوقت
لتحليل إحصاءات البطارية لجهاز Wear OS يشغّل تطبيقك، أدخِل الأمر التالي في نافذة المحطة الطرفية على جهاز التطوير:
adb shell dumpsys batterystats
تتضمّن إحدى المكتبات على GitHub محلّل إحصاءات البطارية، والذي قد يكون مفيدًا لتشغيله مع هذا الأمر.
الأحداث التي تؤثر في عمر البطارية
قبل التفكير في تطبيقك على وجه التحديد، من المفيد التفكير بشكل عام في الأحداث التي تستهلك الطاقة على جهاز Wear OS.
يوضّح الجدول التالي التأثير النسبي في عمر البطارية في العديد من الأحداث الشائعة في تطبيقات Wear OS. يختلف معدّل استهلاك البطارية حسب الأجهزة.
| الحدث | التأثير في عمر البطارية | كيفية الحدّ من المشكلة |
|---|---|---|
| الوصول إلى الشبكة، بما في ذلك شبكة LTE وشبكة Wi-Fi | عالية جدًا | تأجيل الوصول إلى الشبكة غير الضروري إلى حين شحن الجهاز |
| تشغيل الشاشة وبدء الوضع التفاعلي | مرتفع | لا تشجِّع المستخدم على إبقاء الشاشة مضاءة لمدة أطول من اللازم. توفير تجربة تستخدم وضع التشغيل دومًا، والمعروف أيضًا باسم "وضع عدم النشاط" |
| الوصول إلى أداة استشعار نظام تحديد المواقع العالمي (GPS) | مرتفع | يُرجى الانتظار إلى أن يطلب المستخدم إذن الوصول إلى نظام تحديد المواقع العالمي (GPS)، إذا كان ذلك ممكنًا. |
| الحفاظ على معدّل استخدام وحدة المعالجة المركزية مرتفعًا | مرتفع | استخدام التدفقات باستخدام Jetpack Compose |
| الوصول إلى أداة استشعار معدّل نبضات القلب | متوسط | استخدِم وقت نشاط المعالج عند تلقّي عمليات استدعاء من واجهة برمجة التطبيقات لأداة الاستشعار، مثلاً عند استخدام خدمات الصحة على Wear OS. |
| الوصول إلى جهاز آخر عبر البلوتوث | متوسط | اجعل الجلسات قصيرة. |
| الاحتفاظ بقفل التنشيط | متوسط | قلِّل من إنشاء عمليات قفل التنشيط يدويًا واستخدِم
WorkManager. |
تقليل مدة تشغيل الشاشة
في تطبيق Wear OS، اتّبِع مبادئ استخدام الشاشة التالية:
- أقفال الشاشة: تجنَّب استخدامها كلما أمكن ذلك. للاختبار، أوقِف خيار العرض الدائم في إعدادات النظام، ولاحظ ما إذا كانت الشاشة تنطفئ خلال فترة المهلة.
- الصور المتحركة: قلِّل من استخدام الصور المتحركة المعقّدة، وركِّز بدلاً من ذلك على الانتقالات الموجزة للحصول على مظهر أكثر احترافية. وعلى وجه الخصوص، تجنَّب الصور المتحركة والحلقات التي تستغرق وقتًا طويلاً. إذا كان التكرار مطلوبًا، أضِف فترة توقّف بين التكرارات تكون مدتها على الأقل مساوية لمدة الحركة نفسها.
- الوقت الذي يظل فيه الجهاز نشطًا في وضع عدم النشاط: يمكنك إتاحة ميزة التشغيل دومًا إذا لزم الأمر، مثلاً في حالات الاستخدام المتعلّقة باللياقة البدنية. إذا كان تطبيقك يتطلّب أن يكون وضع "الشاشة المحيطة" مفعّلاً دائمًا، يُرجى اتّباع الاقتراحات التالية بشأن وضع "الشاشة المحيطة".
تقليل استخدام وحدة المعالجة المركزية
في تطبيق Wear OS، اتّبِع مبادئ استخدام وحدة المعالجة المركزية التالية:
- استخدِمها بشكل موجز.
- يمكنك تجميع أي عمليات ذات صلة معًا، وذلك لزيادة الوقت الذي يكون فيه تطبيقك غير نشط.
تقليل عمليات التنشيط
في معظم الحالات، تجنَّب أي عمليات تمنع تطبيقك من الدخول في وضع السكون، مثل wakelocks. على سبيل المثال، في تطبيقات الصحة واللياقة البدنية، لا تحتاج التمارين الرياضية الطويلة إلى قفل تنبيه. استخدِم وقت تشغيل المعالج عند تلقّي عمليات ردّ الاتصال من واجهة برمجة تطبيقات أجهزة الاستشعار، مثلاً عند استخدام خدمات الصحة على Wear OS.
هناك بعض الحالات التي يكون فيها من المقبول الحصول على قفل تنشيط، مثل عندما يقوم تطبيقك بأحد الإجراءات التالية:
- تشغيل الوسائط في الخلفية
- يستخدم
WorkManagerأوJobScheduler. (يحتفظ النظام بقفل تنشيط نيابةً عنك عند تشغيل المهمة في الخلفية).
لتصحيح أخطاء عمليات قفل التنشيط محليًا، استخدِم أداة فحص المهام في الخلفية في "استوديو Android" أو تتبُّع النظام أو adb shell dumpsys batterystats لفحص الحالات الفردية لعمليات قفل التنشيط الطويلة، بالإضافة إلى ملخّصات لإجمالي عدد عمليات قفل التنشيط ومدتها. قارِن بين عدد عمليات قفل التنشيط التي يحتفظ بها تطبيقك ومدتها وبين أنماط الاستخدام التفاعلي لتطبيقك:
- تحقَّق من وجود أي قفل تنشيط غير متوقّع.
- إذا كانت المدة أطول من المتوقع، فكِّر في ما إذا كان العمل محظورًا بسبب بعض التبعيات، مثل توفّر الشبكة.
فحص كيفية تحوّل تطبيقك إلى غير نشط
يجب مراعاة ما يفعله التطبيق النشط عند وقوع أحداث رئيسية على الجهاز، مثل ما يلي:
- يتم إيقاف الشاشة ويدخل الجهاز في وضع عدم النشاط.
يتم إغلاق التطبيق من خلال التمرير السريع.
لتحليل نشاط التطبيق، استخدِم الأدوات الموضّحة في الأقسام التالية.
Power Profiler
يمكن الوصول إلى Power Profiler من قائمة "استوديو Android" من خلال اختيار عرض (View) > نوافذ الأدوات (Tool Windows) > أداة التوصيف (Profiler):
- افحص تتبُّع النظام أثناء إيقاف الشاشة ودخول الجهاز في وضع الاستراحة.
- ابحث عن أي عمل مستمر، وعن مستوى استخدام وحدة المعالجة المركزية للجهاز.
Perfetto
تتيح لك أداة Perfetto تسجيل تتبُّع ثم فحص تطبيقك لمعرفة ما إذا كانت هناك أي سلاسل تنفيذ تنفّذ أي عمل عند إيقاف تشغيل الشاشة أو عندما ينتقل الجهاز إلى وضع العرض المحيط أو عندما يرفض المستخدم نشاط تطبيقك.
حدِّد الأحداث المخصّصة لتصنيف الأحداث المهمة في تطبيقك، بما في ذلك الأحداث المتعلّقة بالنطاق. بالنسبة إلى تطبيق وسائط، يشمل ذلك مهام مثل جلب قوائم التشغيل وتنزيل ملف وسائط معيّن وبدء التشغيل وإيقافه. من خلال تحديد هذه الأحداث، يمكنك الاطّلاع عليها في Perfetto ومقارنة توقيتها مع استخدام تطبيقك لوحدة المعالجة المركزية والطاقة.
يمكنك أيضًا استخدام Android CLI لتثبيت android-profiler
المهارة (android skills add android-profiler)، ما يتيح لوكلاء الذكاء الاصطناعي تسجيل
سجلات تتبّع نظام Perfetto من سطر الأوامر وتحليل مسارات الطاقة وأقفال التنشيط
وحالات تعليق الجهاز.
تحليل المهام المجدوَلة في تطبيقك
تتيح لك المهام المجدوَلة، باستخدام WorkManager، تنفيذ مهام في الخلفية في تطبيقك. وعلى الرغم من أنّ بعض المهام التي تعمل في الخلفية يجب أن تكون دورية، لا تُنفِّذ المهام بشكل متكرّر جدًا أو لمدة طويلة، لأنّ ذلك قد يؤدي إلى استنزاف بطارية الجهاز.
استخدِم أداة فحص المهام في الخلفية في "استوديو Android" (عرض > نوافذ الأدوات > فحص التطبيق) أو شغِّل adb shell dumpsys jobscheduler وadb shell dumpsys
batterystats لفحص تنفيذ المهام المجدوَلة والعاملين. تحقَّق من معدّل تكرار التنفيذ والمدة الإجمالية:
- إذا كان يتم تشغيل مهمة بشكل متكرّر جدًا، ننصحك بتقليل معدّل التكرار هذا.
- تأكَّد من أنّ إجمالي وقت التنفيذ يتطابق مع ما تتوقّعه، وأنه ليس أطول بكثير.
يمكنك أيضًا تسجيل تتبُّع النظام لربط تنفيذ المهام بنشاط تطبيقك على مدار مخطّط زمني. ننصحك باتّباع الخطوات التالية:
- بالنسبة إلى تطبيقك، يجب أن تكون مدة التنفيذ منطقية.
- عليك تحديد ما إذا كانت المهام تحدث أثناء تشغيل تطبيقك، أو ما إذا كانت المهام تمثّل عملاً دوريًا في الخلفية.
أجهزة الاستشعار
تتضمّن أجهزة Wear OS العديد من أدوات الاستشعار المختلفة، مثل نظام تحديد المواقع العالمي (GPS). في معظم الحالات، استخدِم
خدمات الصحة على Wear OS بدلاً من التفاعل مباشرةً مع
SensorManager. في كثير من الحالات، تجمع "خدمات الصحة" البيانات بذكاء على شكل دفعات لتحسين أداء البطارية.
لتحليل استخدام أدوات الاستشعار في تطبيقك، نفِّذ الأمر التالي في نافذة المحطة الطرفية على جهاز التطوير:
adb shell dumpsys sensorservice
تعرض نتائج هذا الأمر ما يلي:
- عمليات التسجيل الحالية والسابقة لأجهزة الاستشعار
- إعدادات أداة الاستشعار، بما في ذلك تجميع البيانات إذا تم ضبطها
- عيّنات بيانات تم جمعها مؤخرًا
اختبار إلغاء التسجيل من أدوات الاستشعار
للتحقّق مما إذا كان تطبيقك يتوقف عن جلب بيانات أجهزة الاستشعار على النحو المتوقّع، اختبِر السيناريوهات التالية:
- أغلِق تطبيقك بالتمرير سريعًا.
- انقر على الشاشة براحة يدك. يؤدي هذا إما إلى إيقاف تشغيل الشاشة أو وضع الشاشة في وضع عدم النشاط.
استخدِم أمر ADB من القسم السابق للتحقّق مما إذا كانت أداة الاستشعار تظهر بشكل صحيح على أنّها غير مسجَّلة.
طبقة البيانات
عند استخدام Data Layer API، تستهلك كل عملية نقل بعض الطاقة. على وجه الخصوص، إذا كنت تستخدم واجهة برمجة التطبيقات هذه لإرسال البيانات، يجب أن يتم تنشيط تطبيقك لتلقّي البيانات. لهذه الأسباب، ننصحك باستخدام واجهة برمجة التطبيقات هذه بحذر.
تشمل بعض أفضل الممارسات الإضافية لاستخدام Data Layer API ما يلي:
- انتظِر إلى أن يصبح تطبيقك نشطًا قبل إعداد أداة معالجة باستخدام
WearableListenerService. - لا تستخدِم واجهة برمجة التطبيقات Data Layer API لإرسال إشعارات دورية إلى الساعة للتحقّق مما إذا كان هناك جهاز مصاحب أو تطبيق متاحًا. من خلال إرسال الرسائل بشكل متكرر، ينشّط تطبيقك الراديو وعملية التطبيق عن بُعد، ما يؤدي إلى استنزاف بطارية الجهاز أكثر من اللازم.
بدلاً من ذلك، استخدِم
CapabilityClientلاكتشاف مدى توفّر الجهاز وإمكاناته، أو أرسِل الرسائل فقط عند تغيُّر الحالة. إرسال تغييرات الحالة بدلاً من ضبط التحديثات السريعة تتيح تغييرات الحالة هذه لجهاز Wear OS إجراء عمليات حسابية للبيانات المحلية، مثل وقت بدء جلسة التمرين.
لا ترسِل سوى تغييرات الحالة التي تعدِّل واجهة المستخدم. على سبيل المثال، إذا كانت شاشة النشاط تعرض فقط "الكيلومترات التي تم قطعها" بمنزلة عشرية واحدة، لا ترسل تغييرًا في الحالة إلى Wear OS في كل مرة يتحرك فيها المستخدم مترًا آخر للأمام.
لتحليل استخدام Data Layer API في تطبيقك، نفِّذ الأمر التالي في نافذة المحطة الطرفية على جهاز التطوير:
adb shell dumpsys activity service WearableService
تتضمن نتائج هذا الأمر ما يلي:
- RpcService: تتيح لك معرفة عدد المرات والمسارات التي يتم استدعاؤها باستخدام
MessageClient. - DataService: تتيح لك معرفة عدد مرات ضبط عناصر البيانات باستخدام
DataClient.
تطبيقات الصحة واللياقة البدنية
إذا كنت تدير تطبيقًا للصحة واللياقة البدنية، يمكنك استخدام خدمات الصحة لتحسين استخدام تطبيقك لأدوات الاستشعار.
- بالنسبة إلى "
ExerciseClient"، استخدِم سجلّ تتبّع النظام أو Perfetto أو "adb shell dumpsys batterystats" للتحقّق من السلوك الصحيح في وضع عدم النشاط. يُرجى التأكّد من أنّ تطبيقك لا ينشط أكثر من مرة كل دقيقة أو دقيقتين لتلقّي بيانات "ExerciseUpdate". - لمراقبة الصحة العامة على مدار اليوم، استخدِم
PassiveMonitoringClient، كما هو موضّح في الدليل حول كيفية مراقبة بيانات الصحة واللياقة البدنية في الخلفية.
المربّعات والإضافات
إذا كان تطبيقك يتيح لوحة أو عنصر واجهة مستخدم، اتّبِع أفضل الممارسات التالية:
- أوقِف إعادة التحميل التلقائية أو ارفع معدّل إعادة التحميل إلى ساعتين أو أكثر.
- استخدِم مراسلة Firebase السحابية (FCM) أو المهام المجدوَلة بشكل مناسب لإرسال تحديثات البيانات. احرص على منع إجراء التحديثات بمعدّل سريع، لأنّ ذلك قد يؤدي إلى أن يجدول النظام العمل المتكرر بمعدّل أسرع من المعدّل الذي يمكن للمستخدم أو النظام الأساسي الوصول إلى البيانات اللازمة لتنفيذ هذا العمل.
- لا تحدّد موعدًا لتنفيذ عمل في مربّع التطبيق أو العنصر عندما لا يتفاعل المستخدم معه.
- استخدِم الأساليب التي تعطي الأولوية للعمل بلا إنترنت.
- يمكنك مشاركة قاعدة بيانات واحدة في تطبيقك الرئيسي وشاشات المعلومات والإضافات. يساعد هذا أيضًا في الحفاظ على اتساق البيانات عبر مساحات واجهة المستخدم أيضًا.
التطبيقات المقترَحة لك
- ملاحظة: يتم عرض نص الرابط عندما تكون JavaScript غير مفعَّلة
- الوصول إلى الموقع الجغرافي في الخلفية
- جدولة المنبّهات
- إنشاء تطبيق مصغّر متقدّم {:#advanced-widget}