توضّح مستندات الخدمات التي تعمل في المقدّمة السلوك الحالي لهذه الخدمات في Android. وتقدّم المستندات إرشادات حول أفضل الممارسات لمعظم التطبيقات، سواء كانت تستهدف أحدث إصدار من Android أم لا.
توضّح هذه الصفحة بعض التغييرات المهمة الأخيرة التي تم إجراؤها على الخدمات التي تعمل في المقدّمة، وتأثيرها على التطبيقات التي لا تستهدف أحدث إصدار من نظام Android الأساسي. في كثير من الحالات، تصبح أفضل الممارسات التي كانت اختيارية للتطبيقات التي تستهدف مستويات واجهة برمجة التطبيقات الأدنى إلزامية للتطبيقات التي تستهدف مستويات واجهة برمجة التطبيقات الأعلى.
Android 16 (المستوى 36 من واجهة برمجة التطبيقات)
تنطبق التغييرات التالية على التطبيقات التي تعمل بنظام التشغيل Android 16 أو الإصدارات الأحدث، بغض النظر عن مستوى واجهة برمجة التطبيقات الذي تستهدفه:
أما المهام في الخلفية التي تبدأ من خدمة تعمل في المقدّمة، فيجب أن تلتزم الآن بحصص وقت التشغيل الخاصة بها. ويشمل ذلك المهام المجدوَلة مباشرةً باستخدام
JobScheduler، بالإضافة إلى المهام التي تم إنشاؤها بواسطة مكتبات أخرى، مثل WorkManager أوDownloadManager.لنقل البيانات استجابةً لإجراء من المستخدم، ننصحك باستخدام مَهمة نقل البيانات التي يبدأها المستخدم. يتم إعفاء هذه الوظائف من حصص الوظائف العادية.
Android 15 (المستوى 35 من واجهة برمجة التطبيقات)
تنطبق المتطلبات التالية على التطبيقات التي تستهدف المستوى 35 أو أعلى من واجهة برمجة التطبيقات:
- هناك قيود جديدة على مدة تشغيل الخدمة التي تعمل في المقدّمة من النوع
dataSync. يتم توضيح هذه القيود في سلوك مهلة الخدمة التي تعمل في المقدّمة. تنطبق قيود مشابهة على نوع الخدمة التي تعمل في المقدّمةmediaProcessing(الجديدة في Android 15). - لم يعُد مسموحًا لخدمات
BOOT_COMPLETEDالتي تعمل في المقدّمة بتشغيل خدمات معيّنة تعمل في المقدّمة. - لا يُسمح للتطبيقات التي لديها إذن
SYSTEM_ALERT_WINDOWبتشغيل الخدمات التي تعمل في المقدّمة من الخلفية إلا إذا كانت لديها حاليًا نافذة تراكب مرئية (أو إذا كانت تستوفي أحد الاستثناءات الأخرى من قيود التشغيل في الخلفية). في السابق، كان الإعفاء لهذه التطبيقات أوسع نطاقًا.
Android 14 (مستوى واجهة برمجة التطبيقات 34)
تنطبق المتطلبات التالية على التطبيقات التي تستهدف المستوى 34 أو أعلى من واجهة برمجة التطبيقات:
- يجب الإفصاح عن جميع الخدمات التي تعمل في المقدّمة مع تحديد أنواعها.
- يجب أن تطلب التطبيقات نوع الإذن المناسب لنوع العمل الذي ستؤدّيه الخدمة التي تعمل في المقدّمة. لكل نوع خدمة تعمل في المقدّمة
نوع إذن مقابل. على سبيل المثال، إذا كان أحد التطبيقات يشغّل خدمة تعمل في المقدّمة وتستخدم الكاميرا، عليك طلب الإذنَين
FOREGROUND_SERVICEوFOREGROUND_SERVICE_CAMERA. إذا كان التطبيق يستهدف المستوى 34 أو أعلى من واجهة برمجة التطبيقات ولا يطلب الإذن المحدّد المناسب، يعرض النظام الخطأSecurityException.
Android 12 (مستوى واجهة برمجة التطبيقات 31)
تنطبق المتطلبات التالية على التطبيقات التي تستهدف المستوى 31 أو أعلى لواجهة برمجة التطبيقات:
- لا يُسمح للتطبيقات بتشغيل الخدمات التي تعمل في المقدّمة عندما يكون التطبيق قيد التشغيل في الخلفية، مع بعض الاستثناءات المحدّدة. لمزيد من المعلومات، ومعلومات حول الاستثناءات من هذه القاعدة، يُرجى الاطّلاع على القيود المفروضة على بدء خدمة تعمل في المقدّمة من الخلفية.
Android 11 (مستوى واجهة برمجة التطبيقات 30)
تنطبق المتطلبات التالية على التطبيقات التي تستهدف المستوى 30 أو أعلى لواجهة برمجة التطبيقات:
- إذا كانت الخدمات التي تعمل في المقدّمة في أحد التطبيقات تستخدم الكاميرا أو الميكروفون، يجب أن يُعلن التطبيق عن الخدمة باستخدام نوع الخدمة
cameraأوmicrophoneعلى التوالي.
Android 10 (المستوى 29 من واجهة برمجة التطبيقات)
تنطبق المتطلبات التالية على التطبيقات التي تستهدف المستوى 29 من واجهة برمجة التطبيقات أو الإصدارات الأحدث:
- إذا كانت الخدمات التي تعمل في المقدّمة في أحد التطبيقات تستخدم معلومات الموقع الجغرافي، يجب أن يُعلن التطبيق عن الخدمة باستخدام نوع الخدمة
location.
Android 9 (المستوى 28 من واجهة برمجة التطبيقات)
يقدّم Android 9 الإذن FOREGROUND_SERVICE. ويجب أن تحصل التطبيقات التي تعمل على الإصدار Android 9 وتستخدم خدمات تعمل في المقدّمة على هذا الإذن.
إذا حاول تطبيق يستهدف المستوى 28 أو أعلى من واجهة برمجة التطبيقات
إنشاء خدمة تعمل في المقدّمة بدون طلب إذن FOREGROUND_SERVICE،
سيُظهر النظام رسالة SecurityException.