سند سرویس پیشزمینهای رفتار فعلی سرویسهای پیشزمینهای Android را شرح میدهد. این اسناد راهنماییهایی درباره روالهای مطلوب برای اکثر برنامهها ارائه میدهد، چه جدیدترین نسخه Android را هدف قرار دهند یا نه.
این صفحه برخیاز مهمترین تغییرات اخیر در سرویسهای پیشزمینهای و پیامدهای آن برای برنامههایی را که جدیدترین نسخه پلاتفرم Android را هدف قرار نمیدهند شرح میدهد. در بسیاری از موارد، روالهای مطلوبی که برای برنامههایی با سطح میانای برنامهسازی کاربردی هدف پایینتر اختیاری بودند، برای برنامههایی با سطح میانای برنامهسازی کاربردی هدف بالاتر اجباری میشوند.
Android 16 (سطح میانای برنامهسازی کاربردی ۳۶)
تغییرات زیر برای برنامههایی اعمال میشود که در Android 16 یا بالاتر اجرا میشوند، صرفنظر از اینکه چه سطح میانای برنامهسازی کاربردی را هدف قرار میدهند:
کارهای پسزمینهای که از سرویس پیشزمینهای شروع میشوند اکنون باید از سهمیههای زمان اجرای مربوطه خود پیروی کنند. این شامل کارهای زمانبندیشده مستقیماً با
JobScheduler، و همچنین کارهای ایجادشده توسط کتابخانههای دیگر مانند WorkManager یاDownloadManagerمیشود.برای انتقال داده در پاسخ به کنش کاربر، از کار انتقال داده آغازشده ازسوی کاربر استفاده کنید. این مشاغل از سهمیههای شغلی معمولی معاف هستند.
Android 15 (سطح میانای برنامهسازی کاربردی 35)
الزامات زیر برای برنامههایی اعمال میشود که سطح میانای برنامهسازی کاربردی ۳۵ یا بالاتر را هدف قرار میدهند:
- محدودیتهای جدیدی برای مدت زمان اجرای سرویس پیشزمینهای
dataSyncوجود دارد. این محدودیتها در رفتار مهلت سرویس پیشزمینهای شرح داده شده است. محدودیتهای مشابهی برای نوع سرویس پیشزمینهایmediaProcessing(جدید در Android 15) اعمال میشود. BOOT_COMPLETEDسرویسهای پیشزمینهای دیگر مجاز به راهاندازی برخیاز سرویسهای پیشزمینهای نیستند.- برنامههایی که اجازه
SYSTEM_ALERT_WINDOWرا دارند فقط درصورتی میتوانند سرویسهای پیشزمینهای را از پسزمینه راهاندازی کنند که درحالحاضر پنجره همپوشانی نمایانی داشته باشند (یا اگر یکی از معافیتهای دیگر از محدودیتهای راهاندازی پسزمینه را داشته باشند). قبلاً معافیت برای این برنامهها گستردهتر بود.
Android 14 (سطح میانای برنامهسازی کاربردی 34)
الزامات زیر برای برنامههایی اعمال میشود که سطح میانای برنامهسازی کاربردی ۳۴ یا بالاتر را هدف قرار میدهند:
- باید همه سرویسهای پیشزمینهای را با نوع سرویسشان اعلام کنید.
- برنامهها باید نوع اجازه مناسب را برای نوع کاری که سرویس پیشزمینهای انجام خواهد داد درخواست کنند. هر نوع سرویس پیشزمینهای
یک نوع اجازه متناظر دارد. برای مثال، اگر برنامهای سرویس پیشزمینهای را راهاندازی کند که از دوربین استفاده میکند، باید هم اجازه
FOREGROUND_SERVICEو هم اجازهFOREGROUND_SERVICE_CAMERAرا درخواست کنید. اگر برنامهای سطح میانای برنامهسازی کاربردی ۳۴ یا بالاتر را هدف قرار دهد و اجازه خاص مناسب را درخواست نکند، سیستمSecurityExceptionرا صادر میکند.
Android 12 (سطح میانای برنامهسازی کاربردی 31)
الزامات زیر برای برنامههایی که سطح میانای برنامهسازی کاربردی ۳۱ یا بالاتر را هدف قرار میدهند اعمال میشود:
- برنامهها مجاز نیستند سرویسهای پیشزمینهای را درحالیکه برنامه در پسزمینه است راهاندازی کنند، بهجز چند استثنای خاص. برای اطلاعات بیشتر و اطلاعات درباره استثناهای این قانون، به محدودیتهای شروع سرویس پیشزمینهای از پسزمینه مراجعه کنید.
Android 11 (سطح میانای برنامهسازی کاربردی 30)
الزامات زیر برای برنامههایی اعمال میشود که سطح میانای برنامهسازی کاربردی ۳۰ یا بالاتر را هدف قرار میدهند:
- اگر سرویسهای پیشزمینهای برنامه از دوربین یا میکروفون استفاده میکنند، برنامه باید
سرویس را بهترتیب با نوع سرویس
cameraیاmicrophoneاعلام کند.
Android 10 (سطح میانای برنامهسازی کاربردی ۲۹)
الزامات زیر برای برنامههایی اعمال میشود که سطح میانای برنامهسازی کاربردی ۲۹ یا بالاتر را هدف قرار میدهند:
- اگر سرویسهای پیشزمینهای برنامه از اطلاعات مکان استفاده میکند، برنامه باید
سرویس را با نوع سرویس
locationاعلام کند.
Android 9 (سطح میانای برنامهسازی کاربردی ۲۸)
Android 9 اجازه
FOREGROUND_SERVICE را معرفی میکند. برنامههایی که در Android 9 اجرا میشوند و از سرویسهای پیشزمینهای استفاده میکنند باید این اجازه را داشته باشند.
اگر برنامهای که سطح میانای برنامهسازی کاربردی ۲۸ یا بالاتر را هدف قرار میدهد،
تلاش کند سرویس پیشزمینهای را بدون درخواست اجازه FOREGROUND_SERVICE ایجاد کند،
سیستم SecurityException را صادر میکند.