تحسين إعدادات القيلولة ووضع الاستعداد

يتضمّن Android ميزتين لتوفير الطاقة تساعدان على إطالة عمر البطارية للمستخدمين من خلال إدارة سلوك التطبيقات عندما لا يكون الجهاز متصلاً بمصدر طاقة، وهما: القيلولة وتطبيقات وضع الاستعداد. يعمل وضع الاستراحة على تقليل استهلاك البطارية من خلال تأجيل نشاط وحدة المعالجة المركزية (CPU) والشبكة في الخلفية للتطبيقات عندما لا يكون الجهاز قيد الاستخدام لعدة أيام. يعمل وضع الاستعداد للتطبيقات على تأجيل نشاط الشبكة في الخلفية للتطبيقات التي لا تتضمّن أي نشاط حديث للمستخدم.

أثناء تشغيل الجهاز في "القيلولة"، يتم تأجيل وصول التطبيقات إلى بعض الموارد ذات الاستهلاك الكثيف للبطارية إلى أن تظهر نافذة الصيانة. يمكنك الاطّلاع على القيود المحدّدة في قيود إدارة الطاقة.

تدير ميزتا "الوضع المنخفض الطاقة" و"وضع الاستعداد للتطبيقات" سلوك جميع التطبيقات التي تعمل بالإصدار 6.0 من نظام التشغيل Android أو الإصدارات الأحدث، بغض النظر عمّا إذا كانت تستهدِف تحديدًا المستوى 23 من واجهة برمجة التطبيقات. للمساعدة في ضمان تقديم أفضل تجربة للمستخدمين، اختبِر تطبيقك في وضعَي "الاستراحة" و"وضع الاستعداد" للتطبيقات، واحرِص على إجراء أي تعديلات ضرورية على الرمز البرمجي. تقدّم القسمان التاليان التفاصيل.

فهم وضع "القيلولة"

إذا ترك المستخدم جهازًا غير متصل بمصدر طاقة وغير متحرك لفترة من الوقت، مع إطفاء الشاشة، سيدخل الجهاز في وضع "الاستراحة الذكية". في وضع "الاستراحة"، يحاول النظام الحفاظ على شحن البطارية من خلال حظر وصول التطبيقات إلى الخدمات التي تستهلك شبكة ووحدة المعالجة المركزية (CPU) بشكلٍ كبير. كما أنه يمنع التطبيقات من الوصول إلى الشبكة ويؤجل مهامها ومزامنتها والمنبّهات القياسية.

بشكل دوري، يخرج النظام من القيلولة لفترة قصيرة للسماح للتطبيقات بإكمال أنشطتها المؤجلة. أثناء نافذة الصيانة هذه، يشغِّل النظام جميع المزامنات والمهام والمنبّهات المعلّقة، ويسمح للتطبيقات بالوصول إلى الشبكة.

الشكل 1. يوفّر تطبيق Doze نافذة صيانة متكرّرة للتطبيقات لاستخدام الشبكة والتعامل مع الأنشطة المعلّقة.

عند انتهاء نافذة الصيانة، يدخل النظام إلى "قيلولة" مرة أخرى، ويعلّق الوصول إلى الشبكة، وتأجيل المهام، والمزامنات، والمنبّهات. وبمرور الوقت، يجدول النظام نوافذ الصيانة بشكل أقل تكرارًا، ما يساعد في تقليل استهلاك البطارية في حالات عدم النشاط لفترة أطول أثناء عدم شحن الجهاز.

عندما يوقِظ المستخدم الجهاز من خلال تحريكه أو تشغيل الشاشة أو توصيل شاحن، يخرج النظام من وضع "الاستراحة" وتستأنف جميع التطبيقات نشاطها الطبيعي.

قيود القيلولة

يفرض النظام القيود التالية على تطبيقاتك أثناء وضع "الاستراحة":

  • يعلّق الوصول إلى الشبكة.
  • ويتجاهل عمليات قفل التنشيط.
  • يتم تأجيل المنبّهات العادية AlarmManager، بما في ذلك setExact() وsetWindow()، إلى نافذة الصيانة التالية.
    • إذا كنت بحاجة إلى ضبط منبّهات يتم تفعيلها أثناء وضع "الاستراحة"، استخدِم setAndAllowWhileIdle() أو setExactAndAllowWhileIdle().
    • يستمر تشغيل المنبّهات التي تم ضبطها باستخدام رمز setAlarmClock() بشكل طبيعي. يخرج النظام من وضع "الاستراحة" قبل وقت قصير من بدء رنّن هذه المنبّهات.
  • لا يتم إجراء عمليات بحث عن شبكات Wi-Fi.
  • لا يسمح بتشغيل محوِّلات المزامنة.
  • لا يسمح بتشغيل JobScheduler . يستخدم

قائمة التحقّق الخاصة بالقيلولة

ضبط تطبيقك على ميزة "القيلولة"

يمكن أن تؤثر ميزة "الوضع الهادئ" في التطبيقات بشكلٍ مختلف، وذلك حسب الإمكانات التي تقدّمها والخدمات التي تستخدمها. تعمل العديد من التطبيقات بشكل طبيعي خلال دورات "وضع السكون" بدون أي تعديل. في بعض الحالات، يجب تحسين طريقة إدارة تطبيقك للشبكات والمنبّهات والوظائف والمزامنة. يجب أن تكون التطبيقات قادرة على إدارة الأنشطة بكفاءة خلال كل فترة صيانة.

للمساعدة في جدولة المنبّهات، يمكنك استخدام طريقتَين AlarmManager، هما: setAndAllowWhileIdle() وsetExactAndAllowWhileIdle(). وباستخدام هذه الطرق، يمكنك تعيين تنبيهات يتم إطلاقها حتى إذا كان الجهاز في وضع القيلولة.

من المحتمل أيضًا أن يؤثر حظر وضع "الاستراحة الذكية" على الوصول إلى الشبكة في تطبيقك، خاصةً إذا كان التطبيق يعتمد على الرسائل في الوقت الفعلي، مثل الإشعارات أو الإشعارات الفورية. إذا كان تطبيقك يتطلب اتصالاً مستمرًا بالشبكة لاستقبال الرسائل، استخدِم ميزة المراسلة عبر السحابة الإلكترونية من Firebase (FCM) إن أمكن.

للتأكّد من أنّ تطبيقك يعمل على النحو المتوقَّع مع ميزة "القيلولة"، يمكنك استخدام أوامر adb لإجبار النظام على الدخول إلى وضع "القيلولة" والخروج منه وملاحظة سلوك التطبيق. لمعرفة التفاصيل، يُرجى الاطّلاع على الاختبار باستخدام وضعَي "الاستراحة الذكية" و"الوضع التلقائي للتطبيقات".

التعرّف على وضع الاستعداد للتطبيقات

تتيح ميزة "وضع الاستعداد للتطبيقات" للنظام تحديد أنّ أحد التطبيقات في وضع عدم النشاط عندما لا يستخدمه المستخدم بنشاط. ويحدد النظام هذا الإجراء عندما لا يلمس المستخدم التطبيق لفترة زمنية معينة ولا ينطبق أي من الشروط التالية:

  • يقوم المستخدم بتشغيل التطبيق بشكل صريح.
  • يتضمّن التطبيق عملية تعمل في المقدّمة حاليًا، إما كنشاط أو خدمة تعمل في المقدّمة، أو قيد الاستخدام من قِبل نشاط آخر أو خدمة أخرى في المقدّمة.
  • يُنشئ التطبيق إشعارًا يظهر للمستخدمين على شاشة القفل أو في علبة الإشعارات.

عندما يشغِّل المستخدم الجهاز من خلال توصيل مصدر طاقة به، يُخرج النظام التطبيقات من وضع الاستعداد، ما يتيح للمستخدمين الوصول إلى الشبكة بحرية وتنفيذ أي مهام وعمليات مزامنة في انتظار المراجعة. إذا كان الجهاز غير نشِط لفترة زمنية طويلة، يسمح النظام للتطبيقات غير النشطة بالوصول إلى الشبكة مرة واحدة يوميًا تقريبًا.

استخدام خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" للتفاعل مع تطبيقك عندما يكون الجهاز غير نشِط لفترة قصيرة

المراسلة عبر السحابة الإلكترونية من Firebase (FCM) هي خدمة يتم توصيلها من السحابة الإلكترونية إلى الجهاز وتتيح لك إتاحة المراسلة في الوقت الفعلي بين التطبيقات والخدمات الخلفية على أجهزة Android. توفّر المراسلة عبر السحابة الإلكترونية من Firebase اتصالاً واحدًا دائمًا بالسحابة الإلكترونية. يمكن لجميع التطبيقات التي تحتاج إلى ميزة المراسلة في الوقت الفعلي مشاركة هذا الاتصال. إنّ هذا الاتصال المشترك يحسّن استهلاك البطارية بشكل كبير من خلال عدم ضرورة أن تحتفظ تطبيقات متعددة باتصالات مستمرة خاصة بها، ما قد يؤدي إلى استنزاف طاقة البطارية بسرعة. ولهذا السبب، إذا كان تطبيقك يتطلب دمج المراسلة مع خدمة تعمل في الخلفية، ننصحك بشدة باستخدام ميزة "المراسلة عبر السحابة الإلكترونية من Firebase" إن أمكن بدلاً من الحفاظ على اتصالك المستمر بالشبكة.

تم تحسين خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" لتعمل مع وضعَي "القيلولة" و"تطبيقات وضع الاستعداد". تتيح لك الرسائل ذات الأولوية العالية عبر خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" تنشيط تطبيقك لجذب المستخدم. في وضع "الاستراحة" أو "وضع الاستعداد" للتطبيقات، يُرسِل النظام الرسالة ويمنح التطبيق إذن وصول مؤقتًا إلى خدمات الشبكة وعمليات قفل التنشيط الجزئية، ثم يعيد الجهاز أو التطبيق إلى حالة الاستراحة. بالنسبة إلى الإشعارات الحساسة للوقت والتي تظهر للمستخدم، ننصحك باستخدام رسائل ذات أولوية عالية لتفعيل تسليمها في وضع "الاستراحة الذكية". يمكن أن تؤدي الرسائل ذات الأولوية العالية إلى تلقّي إشعارات. للحصول على مزيد من المعلومات، يمكنك الاطّلاع على إرشادات خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" بشأن الرسائل ذات الأولوية العالية.

بالنسبة إلى الرسائل التي لا تؤدي إلى ظهور إشعارات، مثل إبقاء محتوى التطبيق aggiornato في الخلفية أو بدء عمليات مزامنة البيانات، استخدِم رسائل FCM ذات الأولوية العادية. ويتم تسليم رسائل الأولوية العادية فورًا إذا لم يكن الجهاز في وضع "القيلولة". إذا كان الجهاز في وضع "القيلولة"، سيتم تسليمه أثناء نوافذ صيانة ميزة "القيلولة" الدورية أو فور تنشيط المستخدم للجهاز.

إذا كان تطبيقك يتطلب مراسلة بعد استلام الرسالة، يمكنك استخدام "المراسلة عبر السحابة الإلكترونية من Firebase" كأحد أفضل الممارسات العامة. إذا كان تطبيقك يستخدم حاليًا خدمة "إشعارات Google من خادم Firebase للرسائل"، تأكَّد من أنّه يستخدم الرسائل ذات الأولوية العالية للرسائل التي تؤدي إلى ظهور إشعارات موجّهة للمستخدمين فقط.

الدعم لحالات الاستخدام الأخرى

تستطيع جميع التطبيقات تقريبًا توفير ميزة "القيلولة" من خلال إدارة إمكانية الاتصال بالشبكة و المنبّهات والوظائف والمزامنات وباستخدام رسائل "المراسلة عبر السحابة الإلكترونية من Firebase". وقد لا يكون ذلك كافيًا لمجموعة ضيّقة من حالات الاستخدام. في هذه الحالات، يقدّم النظام قائمة قابلة للضبط بالتطبيقات التي يتم استثناؤها جزئيًا من تحسينات وضعَي "الاستراحة" و"الاستعداد" للتطبيقات.

يمكن للتطبيق الذي تم استثناؤه جزئيًا استخدام الشبكة وإبقاء عمليات قفل التنشيط الجزئية أثناء القيلولة وتطبيقات وضع الاستعداد. ومع ذلك، لا تزال قيود أخرى تنطبق على التطبيق، تمامًا كما تنطبق على التطبيقات الأخرى. على سبيل المثال، يتم تأجيل مهام التطبيق ومزامنته في المستوى 23 من واجهة برمجة التطبيقات والإصدارات الأقدم، ولا يتم تشغيل AlarmManager المنبّهات العادية. يمكن للتطبيق التحقّق مما إذا كان مدرَجًا حاليًا في قائمة الاستثناءات من خلال الاتصال بالرقم isIgnoringBatteryOptimizations().

يمكن للمستخدمين ضبط قائمة التطبيقات المعفاة يدويًا في الإعدادات > البطارية > تحسين البطارية. بدلاً من ذلك، يوفّر النظام طرقًا للتطبيقات لتطلب من المستخدمين استثناءها:

يمكن للتطبيق التحقّق مما إذا كان مُدرَجًا حاليًا في قائمة الإعفاءات من خلال الاتصال برقم isIgnoringBatteryOptimizations().

الاختبار باستخدام وضعَي "الاستراحة" و"وضع الاستعداد للتطبيقات"

للمساعدة في ضمان تقديم تجربة رائعة للمستخدمين، اختبِر تطبيقك بالكامل في ميزتَي "القيلولة" و"تطبيقات وضع الاستعداد".

اختبار تطبيقك باستخدام وضع "الاستراحة"

يمكنك اختبار وضع "القيلولة" من خلال تنفيذ الخطوات التالية:

  1. ضبط جهاز أجهزة أو جهاز افتراضي باستخدام صورة نظام Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات) أو إصدار أحدث
  2. وصِّل الجهاز بجهاز التطوير وثبِّت تطبيقك.
  3. شغِّل تطبيقك واتركه نشطًا.
  4. يمكنك فرض وضع السكون على النظام من خلال تنفيذ الأمر التالي:
        $ adb shell dumpsys deviceidle force-idle
        
  5. عندما تصبح جاهزًا، اخرج من "وضع عدم النشاط" من خلال تنفيذ الأمر التالي:
        $ adb shell dumpsys deviceidle unforce
        
  6. أعِد تفعيل الجهاز من خلال تنفيذ الأمر التالي:
        $ adb shell dumpsys battery reset
        
  7. عليك مراقبة سلوك تطبيقك بعد إعادة تفعيل الجهاز. احرص على أن يسترد التطبيق البيانات بشكل آمن عندما يخرج الجهاز من وضع "القيلولة".

اختبار تطبيقك باستخدام ميزة "وضع الاستعداد للتطبيقات"

لاختبار وضع "التطبيقات في وضع الاستعداد" مع تطبيقك، اتّبِع الخطوات التالية:

  1. ضبط جهاز أو جهاز افتراضي يعمل بالإصدار Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات) أو نسخة نظام أعلى
  2. وصِّل الجهاز بجهاز التطوير وثبِّت تطبيقك.
  3. شغِّل تطبيقك واتركه نشطًا.
  4. فرض تشغيل التطبيق في وضع الاستعداد للتطبيقات من خلال تشغيل الطلبات التالية:
        $ adb shell dumpsys battery unplug
        $ adb shell am set-inactive <packageName> true
        
  5. يمكنك محاكاة تنشيط تطبيقك باستخدام الطلبات التالية:
        $ adb shell am set-inactive <packageName> false
        $ adb shell am get-inactive <packageName>
        
  6. راقِب سلوك تطبيقك بعد تنشيطها. تأكَّد من أنّ التطبيق يسترد بشكل آمن من وضع الاستعداد. على وجه الخصوص، تحقَّق مما إذا كانت الإشعارات وعمليات الخلفية في تطبيقك تعمل على النحو المتوقّع.

حالات الاستخدام المقبولة للإعفاء

يوضّح الجدول التالي العديد من حالات الاستخدام وما إذا كان من المقبول أن تستخدم التطبيقات إجراء ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS النية في هذه الحالات. بشكل عام، لا يستوفي تطبيقك هذه الاستثناءات ما لم تؤدي ميزة "الوضع الهادئ" أو "وضع الاستعداد للتطبيقات" إلى إيقاف الوظيفة الأساسية للتطبيق أو إذا كان هناك سبب فني يمنع تطبيقك من استخدام رسائل FCM ذات الأولوية العالية .

لمزيد من المعلومات، يُرجى الاطّلاع على التوافق مع حالات الاستخدام الأخرى.

النوع حالة الاستخدام هل يمكن استخدام FCM؟ هل الإعفاء مقبول؟ ملاحظات
تطبيقات المراسلة الفورية أو المحادثات أو المكالمات يتطلب تسليم رسائل في الوقت الفعلي إلى المستخدمين عندما يكون الجهاز في وضع القيلولة أو يكون التطبيق في وضع الاستعداد للتطبيقات. نعم، باستخدام "المراسلة عبر السحابة الإلكترونية من Firebase" غير مقبول يمكنك استخدام الرسائل ذات الأولوية العالية عبر خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" لتنشيط التطبيق والوصول إلى الشبكة.
نعم، ولكنّه لا يستخدم رسائل FCM ذات الأولوية العالية.
تطبيق المراسلة الفورية أو المحادثة أو الاتصال وتطبيقات بروتوكول الإنترنت الصوتي (VOIP) للمؤسسات لا، لا يمكن استخدام ميزة "المراسلة عبر السحابة الإلكترونية من Firebase" بسبب التبعية الفنية على خدمة مراسلة أخرى، أو أن يؤدي القيلولة وتطبيقات وضع الاستعداد إلى تعطُّل الوظيفة الأساسية للتطبيق. مقبول
تطبيق "الأمن الشخصي" تطبيقات تحافظ على أمان المستخدمين وعائلاتهم إن وُجدت. مقبول
تطبيق التشغيل الآلي للمهام. تتمثل الوظيفة الأساسية للتطبيق في جدولة الإجراءات المبرمَجة، مثل المراسلة الفورية أو المكالمات الصوتية أو إدارة الصور الجديدة. إن وُجدت. مقبول
تطبيق مصاحب للأجهزة الملحقة إنّ الوظيفة الأساسية للتطبيق هي الحفاظ على اتصال دائم بالجهاز الملحق بغرض توفير إمكانية الوصول إلى الإنترنت للأجهزة الملحقة. إن وُجدت. مقبول
لا يحتاج التطبيق إلا إلى الاتصال بجهاز ملحق بشكل دوري للمزامنة، أو يحتاج فقط إلى الاتصال بالأجهزة، مثل سماعات الرأس اللاسلكية، المتصلة من خلال ملفات البلوتوث العادية. إن وُجدت. غير مقبول