<سرویس>

نحو:
<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:intentMatchingFlags=["none" | "enforceIntentFilter" | "allowNullAction"]
         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>
<property>
شرح:
یک سرویس، یک زیرکلاس Service ، را به عنوان یکی از اجزای برنامه اعلام می‌کند. برخلاف فعالیت‌ها، سرویس‌ها فاقد رابط کاربری بصری هستند. آن‌ها برای پیاده‌سازی عملیات پس‌زمینه طولانی مدت یا یک API ارتباطی غنی که می‌تواند توسط برنامه‌های دیگر فراخوانی شود، استفاده می‌شوند.

تمام سرویس‌ها باید توسط عناصر <service> در فایل مانیفست نمایش داده شوند. هر سرویسی که در آنجا تعریف نشده باشد، توسط سیستم دیده نمی‌شود و هرگز اجرا نمی‌شود.

توجه: در اندروید ۸.۰ (سطح API ۲۶) و بالاتر، سیستم، فعالیت‌هایی را که برنامه شما می‌تواند در حین اجرا در پس‌زمینه انجام دهد، محدود می‌کند. برای اطلاعات بیشتر، به راهنماهایی که در مورد محدودیت‌های اجرای پس‌زمینه و محدودیت‌های مکان پس‌زمینه بحث می‌کنند، مراجعه کنید.

ویژگی‌ها:
android:description
یک رشته قابل خواندن توسط کاربر که سرویس را توصیف می‌کند. این توضیحات به عنوان مرجعی به یک منبع رشته‌ای تنظیم می‌شود، به طوری که می‌تواند مانند سایر رشته‌ها در رابط کاربری بومی‌سازی شود.
android:directBootAware

اینکه آیا سرویس از Direct-Boot آگاه است یا خیر، یعنی اینکه آیا می‌تواند قبل از باز کردن قفل دستگاه توسط کاربر اجرا شود.

نکته: در طول بوت مستقیم ، یک سرویس در برنامه شما فقط می‌تواند به داده‌هایی که در حافظه محافظت‌شده دستگاه ذخیره شده‌اند، دسترسی داشته باشد.

مقدار پیش‌فرض "false" است.

android:enabled
اینکه آیا سرویس می‌تواند توسط سیستم نمونه‌سازی شود یا خیر. اگر امکانش باشد، "true" و در غیر این صورت "false" است. مقدار پیش‌فرض "true" است.

عنصر <application> ویژگی enabled به خود را دارد که برای همه اجزای برنامه، از جمله سرویس‌ها، اعمال می‌شود. ویژگی‌های <application> و <service> باید هر دو "true" باشند، زیرا هر دو به طور پیش‌فرض فعال هستند تا سرویس فعال شود. اگر هر کدام "false" باشد، سرویس غیرفعال است و نمی‌توان از آن نمونه‌سازی کرد.

android:exported
اینکه آیا اجزای برنامه‌های دیگر می‌توانند سرویس را فراخوانی کنند یا با آن تعامل داشته باشند یا خیر. اگر بتوانند "true" و در غیر این صورت "false" است. وقتی مقدار "false" باشد، فقط اجزای همان برنامه یا برنامه‌هایی با شناسه کاربری یکسان می‌توانند سرویس را شروع کنند یا به آن متصل شوند.

مقدار پیش‌فرض بستگی به این دارد که آیا سرویس شامل فیلترهای intent است یا خیر. عدم وجود هرگونه فیلتر به این معنی است که فقط با مشخص کردن نام دقیق کلاس آن می‌توان آن را فراخوانی کرد. این بدان معناست که سرویس فقط برای استفاده داخلی برنامه در نظر گرفته شده است، زیرا دیگران نام کلاس را نمی‌دانند. بنابراین، در این مورد، مقدار پیش‌فرض "false" است. از سوی دیگر، وجود حداقل یک فیلتر نشان می‌دهد که سرویس برای استفاده خارجی در نظر گرفته شده است، بنابراین مقدار پیش‌فرض "true" است.

این ویژگی تنها راه برای محدود کردن نمایش یک سرویس به برنامه‌های دیگر نیست. همچنین می‌توانید از یک مجوز برای محدود کردن موجودیت‌های خارجی که می‌توانند با سرویس تعامل داشته باشند استفاده کنید. به ویژگی permission مراجعه کنید.

android:foregroundServiceType

مشخص می‌کند که سرویس، یک سرویس پیش‌زمینه است که یک مورد استفاده خاص را برآورده می‌کند. برای مثال، نوع سرویس پیش‌زمینه "location" نشان می‌دهد که یک برنامه در حال دریافت مکان فعلی دستگاه است، معمولاً برای ادامه یک اقدام آغاز شده توسط کاربر مربوط به مکان دستگاه.

شما می‌توانید چندین نوع سرویس پیش‌زمینه را به یک سرویس خاص اختصاص دهید.

android:icon

نمادی که نشان‌دهنده‌ی سرویس است. این ویژگی به عنوان مرجعی برای یک منبع قابل ترسیم که شامل تعریف تصویر است، تنظیم می‌شود. اگر تنظیم نشود، از نمادی که برای کل برنامه مشخص شده است، به جای آن استفاده می‌شود. به ویژگی icon عنصر <application> مراجعه کنید.

آیکون سرویس، چه اینجا تنظیم شود و چه توسط عنصر <application> ، آیکون پیش‌فرض برای همه فیلترهای intent سرویس نیز هست. به ویژگی icon عنصر <intent-filter> مراجعه کنید.

android:intentMatchingFlags

از این ویژگی برای تنظیم دقیق نحوه تطبیق اهداف ورودی سیستم با اجزای برنامه استفاده کنید. به طور پیش‌فرض، هیچ قانون تطبیق خاصی اعمال نمی‌شود.

مقدار تنظیم شده روی برچسب <service> مقدار تنظیم شده روی برچسب <application> را لغو می‌کند.

مقدار باید یک یا چند مورد از پرچم‌های زیر باشد که با ' | ' از هم جدا شده‌اند:

پرچم توضیحات
none تمام قوانین تطبیق ویژه را برای ورودی‌های ورودی غیرفعال می‌کند. هنگام تعیین چندین پرچم، مقادیر متناقض با دادن اولویت به پرچم none حل می‌شوند.
enforceIntentFilter

تطبیق سختگیرانه‌تری را برای اهداف ورودی اعمال می‌کند:

  • اهداف صریح باید با فیلتر هدف کامپوننت هدف مطابقت داشته باشند.
  • اینتنت‌های بدون اکشن با هیچ فیلتر اینتنتی مطابقت ندارند.
allowNullAction

قوانین تطبیق را آسان می‌کند تا به intent های بدون اکشن اجازه تطبیق داده شود. این پرچم همراه با enforceIntentFilter برای دستیابی به رفتار زیر استفاده می‌شود:

  • اهداف صریح باید با فیلتر هدف کامپوننت هدف مطابقت داشته باشند.
  • اینتنت‌های بدون اکشن مجاز به مطابقت با هر فیلتر اینتنتی هستند.

برای اطلاعات بیشتر، به بخش « اهداف امن‌تر» در تغییرات رفتاری اندروید ۱۶ (سطح API ۳۶) مراجعه کنید.

android:isolatedProcess
If set to "true" , this service runs under a special process that is isolated from the rest of the system and has no permissions of its own. The only communication with it is through the Service API, with binding and starting.
android:label
یک نام قابل خواندن توسط کاربر برای سرویس. اگر این ویژگی تنظیم نشده باشد، برچسب تنظیم شده برای کل برنامه به جای آن استفاده می‌شود. به ویژگی label عنصر <application> مراجعه کنید.

برچسب سرویس، چه در اینجا و چه توسط عنصر <application> تنظیم شود، برچسب پیش‌فرض برای همه فیلترهای intent سرویس نیز هست. به ویژگی 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 خود لغو کند و به شما امکان دهد برنامه خود را در چندین فرآیند پخش کنید.

اگر نام اختصاص داده شده به این ویژگی با یک دونقطه ( : شروع شود، یک فرآیند جدید، خصوصی برای برنامه، در صورت نیاز ایجاد می‌شود و سرویس در آن فرآیند اجرا می‌شود.

اگر نام فرآیند با یک کاراکتر کوچک شروع شود، سرویس در یک فرآیند سراسری با آن نام اجرا می‌شود، مشروط بر اینکه مجوز انجام این کار را داشته باشد. این امر به اجزای برنامه‌های مختلف اجازه می‌دهد تا یک فرآیند را به اشتراک بگذارند و استفاده از منابع را کاهش دهند.

android:stopWithTask
If set to "true" , the system automatically stops the service when the user removes a task that is rooted in an activity that the app owns. The default value is "false" .
همچنین ببینید:
<application>
<activity>
معرفی شده در:
API سطح ۱