<سرویس>

نحو:
<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>
توضیحات:
یک سرویس، یک زیر کلاس Service ، را به عنوان یکی از اجزای برنامه اعلام می کند. برخلاف فعالیت ها، سرویس ها فاقد رابط کاربری بصری هستند. آنها برای اجرای عملیات پس زمینه طولانی مدت یا یک API ارتباطات غنی که می تواند توسط برنامه های کاربردی دیگر فراخوانی شود، استفاده می شود.

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

توجه: در Android 8.0 (سطح API 26) و بالاتر، سیستم کاری را که برنامه شما می‌تواند در پس‌زمینه انجام دهد محدود می‌کند. برای اطلاعات بیشتر، راهنماهایی را ببینید که در مورد محدودیت‌های اجرای پس‌زمینه و محدودیت‌های مکان پس‌زمینه بحث می‌کنند.

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

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

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

مقدار پیش فرض "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" تنظیم شود، این سرویس تحت یک فرآیند خاص اجرا می شود که از بقیه سیستم جدا شده است و هیچ مجوزی ندارد. تنها ارتباط با آن از طریق سرویس 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>
معرفی شده در:
API سطح 1