عندما يترك المستخدم جهاز Android في وضع السكون، ينتقل الجهاز بسرعة إلى حالة التعليق لتجنُّب استنزاف البطارية. ومع ذلك، هناك أوقات يحتاج فيها التطبيق إلى منع وحدة المعالجة المركزية من الانتقال إلى حالة التعليق. في بعض الحالات، قد يحتاج التطبيق إلى إبقاء الشاشة مضاءة أثناء تشغيله. وفي حالات أخرى، لا يحتاج التطبيق إلى إبقاء الشاشة قيد التشغيل، ولكن لا يزال بحاجة إلى أن تكون وحدة المعالجة المركزية نشطة.
يعتمد النهج الذي تتّبعه على احتياجات تطبيقك. ومع ذلك، تنطبق القاعدة العامة التالية: يجب استخدام النهج الأقل استهلاكًا للموارد قدر الإمكان، لتقليل أثر تطبيقك في موارد النظام. يساعدك هذا المستند في اختيار تكنولوجيا Android المناسبة لحالتك.
اختيار التكنولوجيا المناسبة
يعتمد الخيار الأفضل لإبقاء جهازك في وضع "التشغيل" على احتياجات تطبيقك. يساعدك هذا القسم في اختيار النهج المناسب.
- هل يحتاج تطبيقك إلى إبقاء الشاشة مُضاءة؟
- إذا كانت الإجابة نعم، اطّلِع على إبقاء الشاشة مُضاءة. قد تتوفّر واجهة برمجة تطبيقات تهدف إلى غرض معيّن وتؤدي ما تحتاجه. على سبيل المثال، إذا كنت بصدد تنفيذ واجهة مستخدم للمكالمات الهاتفية، يمكنك استخدام إطار عمل الاتصالات السلكية واللاسلكية في Android الذي يحافظ على تشغيل الشاشة عند الحاجة. إذا لم تتوفّر واجهة برمجة تطبيقات
مخصّصة لحالتك، يمكنك استخدام واجهة برمجة تطبيقات
keepScreenOn
.
- إذا كانت الإجابة نعم، اطّلِع على إبقاء الشاشة مُضاءة. قد تتوفّر واجهة برمجة تطبيقات تهدف إلى غرض معيّن وتؤدي ما تحتاجه. على سبيل المثال، إذا كنت بصدد تنفيذ واجهة مستخدم للمكالمات الهاتفية، يمكنك استخدام إطار عمل الاتصالات السلكية واللاسلكية في Android الذي يحافظ على تشغيل الشاشة عند الحاجة. إذا لم تتوفّر واجهة برمجة تطبيقات
مخصّصة لحالتك، يمكنك استخدام واجهة برمجة تطبيقات
- هل يشغِّل تطبيقك خدمة تعمل في المقدّمة، وهل تحتاج إلى إبقاء الجهاز despierto (مفعّلاً) عندما تكون الشاشة مطفأة أثناء تشغيل الخدمة؟
- إذا كانت الإجابة لا، ليس عليك إبقاء الجهاز مشغّلاً. إذا كان المستخدم يتفاعل بنشاط مع التطبيق، سيظل الجهاز مفعّلاً. إذا كان العميل لا يتفاعل مع تطبيقك ولم تكن تشغّل خدمة في المقدّمة، يجب السماح للجهاز بالتوقّف مؤقتًا عند الضرورة. إذا كنت بحاجة فقط إلى التأكّد من إنجاز بعض الأعمال أثناء بقاء المستخدم خارج التطبيق، يمكنك الاطّلاع على مستندات المهام التي تعمل في الخلفية للعثور على الخيار الأفضل.
- إذا كانت الإجابة نعم، تأكَّد أولاً من أنّك بحاجة فعلاً إلى استخدام
خدمة تعمل في المقدّمة. استنادًا إلى حالتك، قد تكون هناك بعض واجهات برمجة التطبيقات المخصّصة لأغراض معيّنة والتي يمكنك استخدامها لتحقيق ما تريده بدلاً من الخدمة التي تعمل في المقدّمة.
يمكنك العثور على معلومات حول هذه الخدمات في مستندات "الخدمة التي تعمل في المقدّمة". على سبيل المثال، إذا كنت بحاجة إلى تتبُّع
الموقع الجغرافي للمستخدم، قد تتمكّن من استخدام واجهة برمجة التطبيقات لميزة وضع حدود جغرافية بدلاً من
location
خدمة تعمل في المقدّمة.
- هل سيؤثّر ذلك سلبًا في تجربة المستخدم إذا تم تعليق الجهاز أثناء
تشغيل الخدمة التي تعمل في المقدّمة وكانت شاشة الجهاز مُطفأة؟ (على سبيل المثال، إذا كنت تستخدم خدمة تعمل في المقدّمة لتعديل الإشعارات، لن تؤدي عملية تعليق الجهاز إلى تجربة سيئة للمستخدم).
- إذا كانت الإجابة لا، لا تستخدِم أداة قفل التنشيط. ويستأنف الإجراء تلقائيًا بعد تفاعل المستخدم مع جهازه، ما يؤدي إلى إيقاف التعليق.
- إذا كانت الإجابة نعم، قد تحتاج إلى استخدام قفل تنبيه. ومع ذلك، يجب التحقّق ممّا إذا كنت تستخدِم واجهة برمجة تطبيقات أو تُنفِّذ إجراءً يُعلِن عن قفل التنشيط نيابةً عنك، كما هو موضّح في الإجراءات التي تحافظ على تنشيط الجهاز.
الإجراءات التي تحافظ على تشغيل الجهاز
إذا كان تطبيقك ينفّذ أيًا مما يلي، لن تحتاج إلى ضبط قفل تنشيط بنفسك. تحافظ الإجراءات وواجهات برمجة التطبيقات التالية على إبقاء الجهاز في وضع "التشغيل".
- في حال تشغيل الصوت، يضبط نظام الصوت قفلاً لتنشيط الشاشة ويديره نيابةً عنك، ولن تحتاج إلى إجراء ذلك بنفسك.
- إذا كنت تستخدم واجهات برمجة تطبيقات أو مكتبات لتحديد المهام، مثل WorkManager أو
JobScheduler
أوDownloadManager
، يحصل النظام أو المكتبة على قفل تنشيط نيابةً عنك. - إذا كنت تستخدم Media3 ExoPlayer، يمكنك استخدام
ExoPlayer.setWakeMode()
لضبط المشغّل لقفل التنشيط نيابةً عنك. - بعض أدوات استشعار الجهاز هي أدوات استشعار للتنشيط، ويمكنك استخدام
SensorManager
لتنشيط الجهاز عندما تتوفر لهذه الأدوات بيانات للإبلاغ عنها. للتحقّق مما إذا كان أحد أجهزة الاستشعار هو جهاز استشعار للتنشيط، يُرجى الاتصال برقمSensor.isWakeUpSensor
.