<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"
         android:stopWithTask=["true" | "false"]>
    ...
</service>
المحتوى المضمّن في:
<application>
يمكن أن تتضمّن ما يلي:
<intent-filter>
<meta-data>
description:
يُعلن عن خدمة، وهي فئة فرعية من Service، كأحد مكونات التطبيق. على عكس الأنشطة، لا تتضمّن الخدمات واجهة مستخدم مرئية. ويتم استخدامها لتنفيذ عمليات في الخلفية تستغرق وقتًا طويلاً أو واجهة برمجة تطبيقات غنية للاتصالات يمكن أن تطلبها التطبيقات الأخرى.

يجب أن يتم تمثيل جميع الخدمات بعناصر <service> في ملف البيان. ولا يرى النظام أيّ إعلانات غير مُعلَن عنها في ملف البيان، وبالتالي لا يتم عرضها مطلقًا.

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

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

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

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

تكون القيمة التلقائية "false".

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

يحتوي عنصر <application> على سمة enabled خاصة به تنطبق على جميع مكونات التطبيق، بما في ذلك الخدمات. يجب أن تكون قيمة كل من السمتَين <application> و<service> "true"، لأنّهما "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 إلى الخدمة.

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

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

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

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

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

android:stopWithTask
في حال ضبط القيمة على "true"، يوقف النظام الخدمة تلقائيًا عندما يزيل المستخدم مهمة مرتبطة بنشاط يملكه التطبيق. تكون القيمة التلقائية "false".
راجِع أيضًا:
<application>
<activity>
تمّت إتاحة هذه الميزة لأول مرة في:
المستوى 1 من واجهة برمجة التطبيقات