<service>

بناء الجملة:
<service android:description="string resource"
         android:directBootAware=["true" | "false"]
         android:enabled=["true" | "false"]
         android:exported=["true" | "false"]
         android:foregroundServiceType=["camera" | "connectedDevice" |
                                        "dataSync" | "health" | "location" |
                                        "mediaPlayback" | "mediaProjection" |
                                        "microphone" | "phoneCall" |
                                        "remoteMessaging" | "shortService" |
                                        "specialUse" | "systemExempted"]
         android:icon="drawable resource"
         android:isolatedProcess=["true" | "false"]
         android:label="string resource"
         android:name="string"
         android:permission="string"
         android:process="string" >
    ...
</service>
مضمّنة في:
<application>
يمكن أن تحتوي على:
<intent-filter>
<meta-data>
description:
تعريف الخدمة والفئة الفرعية Service بصفتها أحد مكونات التطبيق. على عكس الأنشطة، تفتقر الخدمات إلى واجهة مستخدم مرئية. يتم استخدامها لتنفيذ عمليات طويلة الأمد في الخلفية أو واجهة برمجة تطبيقات ثرية للاتصال يمكن استخدامها في تطبيقات أخرى.

يجب تمثيل جميع الخدمات بواسطة عناصر <service> في ملف البيان. وأي بيانات لم يتم الإعلان عنها لا تظهر من قبل النظام ولا يتم تشغيلها أبدًا.

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

السمات:
android:description
سلسلة تصف الخدمة ويمكن للمستخدم قراءتها يتم ضبط الوصف كمرجع لمورد سلسلة، بحيث يمكن ترجمته مثل السلاسل الأخرى في واجهة المستخدم.
android:directBootAware

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

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

القيمة التلقائية هي "false".

android:enabled
ما إذا كان يمكن إنشاء مثيل للخدمة من خلال النظام أم لا. وتكون القيمة هي "true" إن أمكن، و"false" إذا لم يكن الأمر كذلك. القيمة التلقائية هي "true".

ويحتوي العنصر <application> على سمة enabled الخاصة به، والتي تنطبق على جميع مكوّنات التطبيق، بما في ذلك الخدمات. يجب ضبط السمتَين <application> و<service> على "true" لأنّ كلتاهما مضبوطة تلقائيًا حتى يتم تفعيل الخدمة. وإذا كانت إحدى الميزتَين ""false""، سيتم إيقاف الخدمة ولا يمكن إنشاء مثيل لها.

android:exported
ما إذا كان بإمكان مكونات التطبيقات الأخرى استدعاء الخدمة أو التفاعل معها أم لا. إنها "true" إذا كان بإمكانك ذلك، و"false" إذا لم تتمكن من ذلك. عندما تكون القيمة "false"، يمكن فقط لمكوِّنات التطبيق أو التطبيقات نفسها التي لها رقم تعريف المستخدم نفسه بدء الخدمة أو الربط بها.

تعتمد القيمة التلقائية على ما إذا كانت الخدمة تحتوي على فلاتر أهداف. ويعني عدم وجود أي فلاتر أنه لا يمكن استدعاؤه إلا من خلال تحديد اسم فئته بدقة. وهذا يعني أن الخدمة مخصّصة فقط للاستخدام الداخلي للتطبيق، وذلك لأنّ الآخرين لا يعرفون اسم الفئة. إذًا، في هذه الحالة، تكون القيمة التلقائية هي "false". من ناحية أخرى، يعني توفّر فلتر واحد على الأقل أنّ الخدمة مخصّصة للاستخدام الخارجي، وبالتالي فإن القيمة التلقائية هي "true".

هذه السمة ليست الطريقة الوحيدة للحد من تعرض الخدمة للتطبيقات الأخرى. يمكنك أيضًا استخدام إذن لتقييد الكيانات الخارجية التي يمكنها التفاعل مع الخدمة. اطّلِع على السمة permission.

android:foregroundServiceType

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

يمكنك تعيين أنواع متعددة من الخدمات التي تعمل في المقدّمة لخدمة معيّنة.

android:icon
رمز يمثّل الخدمة. يتم تعيين هذه السمة كمرجع لمورد قابل للرسم يحتوي على تعريف الصورة. وإذا لم يتم تعيينه، فسيتم استخدام الرمز المحدد للتطبيق ككل بدلاً من ذلك. اطّلِع على السمة icon للعنصر <application>.

إنّ رمز الخدمة، سواء تم ضبطه هنا أو من خلال العنصر <application>، هو أيضًا الرمز التلقائي لجميع فلاتر أهداف الخدمة. اطّلِع على السمة icon لعنصر <intent-filter>.

android:isolatedProcess
في حال ضبط السياسة على "true"، يتم تشغيل هذه الخدمة من خلال عملية خاصة تكون معزولة عن باقي النظام ولا تمتلك أذونات خاصة بها. ولا يتم التواصل معه سوى من خلال Service API، مع الربط وبدء التشغيل.
android:label
اسم للخدمة يسهل على المستخدم فهمه إذا لم يتم ضبط هذه السمة، يتم استخدام تصنيف التطبيق ككل بدلاً من ذلك. اطّلِع على السمة label الخاصة بالعنصر <application>.

إنّ تصنيف الخدمة، سواء تم ضبطه هنا أو من خلال العنصر <application>، هو أيضًا التصنيف التلقائي لجميع فلاتر أهداف الخدمة. اطّلِع على السمة label لعنصر <intent-filter>.

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

android:name
اسم الفئة الفرعية Service التي تطبّق الخدمة. تمثّل هذه السمة اسم فئة مؤهّلاً بالكامل، مثل "com.example.project.RoomService". ومع ذلك، كاختصار، إذا كان الحرف الأول من الاسم نقطة، مثل ".RoomService"، يتم إلحاقه باسم الحزمة المحددة في العنصر <manifest>.

بعد نشر تطبيقك، لا تغير هذا الاسم ما لم تضبط android:exported="false".

لا يوجد إعداد افتراضي. يجب تحديد الاسم.

android:permission
اسم الإذن الذي يحتاجه أحد الكيانات من أجل تشغيل الخدمة أو الربط بها. في حال عدم منح المتصل startService() أو bindService() أو stopService() هذا الإذن، لن تعمل الطريقة ولن يتم تسليم عنصر Intent إلى الخدمة.

إذا لم يتم ضبط هذه السمة، ينطبق الإذن الذي تم ضبطه في السمة permission الخاصة بالعنصر <application> على الخدمة. في حال عدم ضبط أي من السمتَين، لا تكون الخدمة محمية بإذن.

للمزيد من المعلومات حول الأذونات، يُرجى الاطّلاع على قسم الأذونات في النظرة العامة حول بيان التطبيق و إرشادات الأمان.

android:process
اسم العملية التي يتم فيها تشغيل الخدمة. عادةً، يتم تشغيل جميع مكونات التطبيق في العملية الافتراضية التي يتم إنشاؤها للتطبيق. ولها اسم حزمة التطبيق نفسه. يمكن لسمة process للعنصر <application> ضبط قيمة تلقائية مختلفة لجميع المكوّنات. ويمكن للمكوِّن إلغاء الإعداد التلقائي باستخدام سمة process الخاصة به، ما يتيح لك نشر تطبيقك في عمليات متعدّدة.

إذا كان الاسم الذي تم تعيينه لهذه السمة يبدأ بعلامة النقطتين (:)، فسيتم إنشاء عملية جديدة خاصة بالتطبيق، عندما تكون هناك حاجة إليها، ويتم تشغيل الخدمة في هذه العملية.

إذا كان اسم العملية يبدأ بحرف صغير، يتم تشغيل الخدمة في عملية عامة بهذا الاسم، شريطة أن يكون لديها إذن بذلك. يتيح ذلك للمكونات في التطبيقات المختلفة مشاركة العملية، مما يقلل استخدام الموارد.

راجِع أيضًا:
<application>
<activity>
تم تقديمه في:
المستوى 1 من واجهة برمجة التطبيقات