توضّح مستندات الخدمات التي تعمل في المقدّمة السلوك الحالي لهذه الخدمات في Android. تقدّم المستندات إرشادات حول أفضل الممارسات لمعظم التطبيقات، سواء كانت تستهدف أحدث إصدار من Android أم لا.
توضّح هذه الصفحة بعض التغييرات المهمة التي تم إجراؤها مؤخرًا على الخدمات التي تعمل في المقدّمة، وتأثيراتها على التطبيقات التي لا تستهدف أحدث إصدار من نظام Android الأساسي. في كثير من الحالات، تصبح أفضل الممارسات التي كانت اختيارية للتطبيقات التي تستهدف مستويات أقل من واجهة برمجة التطبيقات إلزامية للتطبيقات التي تستهدف مستويات أعلى من واجهة برمجة التطبيقات.
Android 16 (المستوى 36 لواجهة برمجة التطبيقات)
تنطبق التغييرات التالية على التطبيقات التي تعمل على الإصدار 16 من نظام التشغيل Android أو الإصدارات الأحدث، بغض النظر عن مستوى واجهة برمجة التطبيقات المستهدَف:
يجب الآن أن تلتزم المهام التي تعمل في الخلفية والتي يتم بدء تشغيلها من خدمة تعمل في المقدّمة بحصص وقت التشغيل الخاصة بها. ويشمل ذلك المهام المجدوَلة مباشرةً باستخدام
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
. يجب أن تحصل التطبيقات التي تعمل على الإصدار 9 من نظام التشغيل Android وتستخدم خدمات تعمل في المقدّمة على هذا الإذن.
إذا حاول تطبيق يستهدف المستوى 28 أو أعلى من واجهة برمجة التطبيقات إنشاء خدمة تعمل في المقدّمة بدون طلب إذن FOREGROUND_SERVICE
، سيُصدر النظام الخطأ SecurityException
.