اختيار واجهة برمجة التطبيقات المناسبة لإبقاء الجهاز نشطًا

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

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

اختيار التكنولوجيا المناسبة

يعتمد الخيار الأفضل لإبقاء جهازك نشطًا على احتياجات تطبيقك. يساعدك هذا القسم في اختيار الأسلوب المناسب.

مخطط انسيابي يلخّص كيفية اختيار الطريقة المناسبة لإبقاء الجهاز نشطًا يتم توضيح محتوى مخطط التدفق في النص التالي.

  • هل يحتاج تطبيقك إلى إبقاء الشاشة قيد التشغيل؟
    • إذا كانت الإجابة نعم، اطّلِع على إبقاء الشاشة نشطة. قد تتوفّر واجهة برمجة تطبيقات خاصة الغرض تؤدي ما تحتاج إليه، مثلاً إذا كنت تنفّذ واجهة مستخدم للمكالمات الهاتفية، يمكنك استخدام إطار عمل الاتصالات في Android الذي يبقي الشاشة نشطة عند الحاجة. إذا لم تتوفّر واجهة برمجة تطبيقات مخصّصة لحالتك، يمكنك استخدام واجهة برمجة تطبيقات keepScreenOn.
  • هل يشغّل تطبيقك خدمة تعمل في المقدّمة، وهل تحتاج إلى إبقاء الجهاز نشطًا عندما تكون الشاشة مطفأة أثناء تشغيل الخدمة؟
    • إذا اخترت لا، لن تحتاج إلى إبقاء الجهاز مشغَّلاً. إذا كان المستخدم يتفاعل بنشاط مع التطبيق، سيظل الجهاز نشطًا. إذا كان المستخدم لا يتفاعل مع تطبيقك ولم تكن تشغّل خدمة تعمل في المقدّمة، عليك السماح للجهاز بالانتقال إلى وضع التعليق عند الضرورة. إذا كنت تريد فقط التأكّد من إنجاز بعض المهام أثناء عدم استخدام التطبيق، يمكنك الاطّلاع على مستندات مهام الخلفية للعثور على الخيار الأفضل.
    • إذا كانت الإجابة نعم، عليك أولاً التأكّد من أنّك بحاجة إلى استخدام خدمة تعمل في المقدّمة. بناءً على حالتك، قد تتوفّر بعض واجهات برمجة التطبيقات الخاصة التي يمكنك استخدامها لتلبية احتياجاتك بدلاً من الخدمة التي تعمل في المقدّمة. يمكنك العثور على معلومات حول هذه الخدمات في مستندات خدمة التشغيل في المقدّمة. على سبيل المثال، إذا كنت بحاجة إلى تتبُّع الموقع الجغرافي للمستخدم، قد تتمكّن من استخدام Geofencing API بدلاً من location خدمة تعمل في المقدّمة.
  • هل سيؤدي تعليق الجهاز إلى الإضرار بتجربة المستخدم أثناء تشغيل الخدمة التي تعمل في المقدّمة وإيقاف شاشة الجهاز؟ (على سبيل المثال، إذا كنت تستخدم خدمة تعمل في المقدّمة لتعديل الإشعارات، لن تكون تجربة المستخدم سيئة إذا تم تعليق الجهاز).
    • إذا كانت الإجابة لا، لا تستخدِم قفل تنشيط. يتم استئناف الإجراء تلقائيًا عندما يتفاعل المستخدم مع جهازه، ما يؤدي إلى إيقاف التعليق.
    • إذا كانت الإجابة نعم، قد تحتاج إلى استخدام قفل التنشيط. ومع ذلك، عليك التحقّق مما إذا كنت تستخدم حاليًا واجهة برمجة تطبيقات أو تتّخذ إجراءً يطلب قفل تنبيه نيابةً عنك، كما هو موضّح في الإجراءات التي تُبقي الجهاز نشطًا.

الإجراءات التي تُبقي الجهاز مشغَّلاً

إذا كان تطبيقك ينفّذ أيًا مما يلي، لن تحتاج إلى ضبط قفل التنشيط بنفسك. تُبقي الإجراءات وواجهات برمجة التطبيقات التالية الجهاز نشطًا.

  • إذا كنت تشغّل صوتًا، يضبط نظام الصوت ويُدير قفل التنشيط نيابةً عنك، ولن تحتاج إلى إجراء ذلك بنفسك.
  • إذا كنت تستخدم واجهات برمجة التطبيقات أو المكتبات الخاصة بجدولة المهام، مثل WorkManager أو JobScheduler أو DownloadManager، سيحصل النظام أو المكتبة على قفل تنشيط مرتبط بتطبيقك.
  • إذا كنت تستخدم Media3 ExoPlayer، يمكنك استخدام ExoPlayer.setWakeMode() لكي يضبط المشغّل قفل تنبيه نيابةً عنك.
  • بعض أدوات الاستشعار في الجهاز هي أدوات استشعار تنشيط؛ يمكنك استخدام SensorManager لجعل أدوات الاستشعار هذه تنشّط الجهاز عندما يكون لديها بيانات لإرسالها. للتحقّق مما إذا كان المستشعر هو مستشعر تنبيه، استدعِ Sensor.isWakeUpSensor.
  • في حال جدولة منبّه، سيتم تنشيط الجهاز عندما يرن المنبّه، حتى إذا لم يكن تطبيقك قيد التشغيل.

انظر أيضًا