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