- بناء الجملة:
<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 من واجهة برمجة التطبيقات
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2023-10-18 (حسب التوقيت العالمي المتفَّق عليه)
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"لا يحتوي على المعلومات التي أحتاج إليها."
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"الخطوات معقدة للغاية / كثيرة جدًا."
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"المحتوى قديم."
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"ثمة مشكلة في الترجمة."
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"مشكلة في العيّنات / التعليمات البرمجية"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"غير ذلك"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"يسهُل فهم المحتوى."
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"ساعَدني المحتوى في حلّ مشكلتي."
},{
"type": "thumb-up",
"id": "otherUp",
"label":"غير ذلك"
}]