- بناء الجملة:
<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 و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2024-01-16 (حسب التوقيت العالمي المتفَّق عليه)
[{
"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":"غير ذلك"
}]