مدیر کار
| آخرین به روز رسانی | انتشار پایدار | کاندید را آزاد کنید | نسخه بتا | انتشار آلفا |
|---|---|---|---|---|
| 8 اکتبر 2025 | 2.10.5 | 2.11.0-rc01 | - | - |
اعلام وابستگی ها
برای افزودن وابستگی به WorkManager، باید مخزن Google Maven را به پروژه خود اضافه کنید:
وابستگیهای مصنوعات مورد نیاز خود را در فایل build.gradle برای برنامه یا ماژول خود اضافه کنید:
شیار
dependencies { def work_version = "2.10.5" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
کاتلین
dependencies { val work_version = "2.10.5" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
برای اطلاعات در مورد استفاده از پسوندهای Kotlin، به مستندات ktx مراجعه کنید.
برای اطلاعات بیشتر درباره وابستگیها، به افزودن وابستگیهای ساخت مراجعه کنید.
بازخورد
بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه 2.11
نسخه 2.11.0-rc01
08 اکتبر 2025
androidx.work:work-*:2.11.0-rc01 منتشر شد. نسخه 2.11.0-rc01 حاوی این commit ها است.
نسخه 2.11.0-beta01
24 سپتامبر 2025
androidx.work:work-*:2.11.0-beta01 منتشر شد. نسخه 2.11.0-beta01 حاوی این تعهدات است.
تغییرات API
-
stopRunningWorkWithReasonبهWorkManagerTestDriverاضافه کنید. ( Ie53b2 , b/439955564 )
رفع اشکال
- رفع توقف سرویس پیش زمینه در صورت وجود دستورات معلق ( Iae822 , b/432069314 )
- رفع مشکل از راه دور کارگر کوروتین در بازکردن سرویس راه دور ( I842f2 , b/247113322 )
نسخه 2.11.0-alpha01
27 آگوست 2025
androidx.work:work-*:2.11.0-alpha01 منتشر شد. نسخه 2.11.0-alpha01 حاوی این commit ها است.
تغییرات API
- minSdk از API 21 به API 23 به روز شده است ( Ibdfca , b/380448311 , b/435705964 , b/435705223 )
- API
setRemoteSessionTimeoutMillisدر سازنده WorkManager's Configuration اضافه شده است تا پیکربندی مدت زمانی که یک جلسه RemoteWorkManager از آخرین استفاده از آن زنده است را فعال کند. ( Ib23c8 ) - یک API آزمایشی در
WorkRequest.Builderاضافه کنید تا زمانی که کار توسط سیستم قطع میشود، عقبنشینی اعمال شود. ( Ie2dc7 , b/335513480 ) - API آزمایشی را اضافه کنید تا در یک کلاس کارگر متفاوت به
TestListenableWorkerBuilderنسبت به آنچه که برای پشتیبانی از پیاده سازی های سفارشیWorkerFactoryساخته شده است ( If6bff , b/389154854 ) اضافه کنید
رفع اشکال
- قابلیتهای کش شبکه در
SharedNetworkCallbackبرای جلوگیری از IPCهای غیرضروری ( Ie4027 , b/427115602 ) - مشکلی را در ارزیابی محدودیت شبکه برطرف کنید که در آن موارد کاری بعد از اولی قابلیتهای فعلی شبکه را دریافت نمیکنند و در عوض پس از مهلت زمانی به
ConstraintsNotMetضربه میزنند ( Ib6a66 , b/427115602 )
نسخه 2.10
نسخه 2.10.5
24 سپتامبر 2025
androidx.work:work-*:2.10.5 منتشر شد. نسخه 2.10.5 شامل این commit ها است.
رفع اشکال
- رفع توقف سرویس پیش زمینه در صورت وجود دستورات معلق ( Iae822 , b/432069314 )
نسخه 2.10.4
10 سپتامبر 2025
androidx.work:work-*:2.10.4 منتشر شد. نسخه 2.10.4 حاوی این commit ها است.
رفع اشکال
- رفع مشکل
RemoteCoroutineWorkerکه سرویس راه دور را باز نمی کند ( I842f2 , b/247113322 )
نسخه 2.10.3
30 جولای 2025
androidx.work:work-*:2.10.3 منتشر شد. نسخه 2.10.3 شامل این commit ها است.
رفع اشکال
- مشکلی را برطرف کنید که در آن کارگران با محدودیتهای شبکه مشابه با کارگر قبلی گزارش میدهند که محدودیتهایشان برآورده نشده است. ( b/427115602 ).
نسخه 2.10.2
18 ژوئن 2025
androidx.work:work-*:2.10.2 منتشر شد. نسخه 2.10.2 حاوی این commit ها است.
رفع اشکال
- مشکلی را هنگام تداوم کارگران با درخواستهای شبکه و قابلیتهای پیشفرض برطرف کنید که منجر به اضافه شدن مجدد قابلیتهای حذف شده و باعث بدرفتاری کارگران با محدودیتهای شبکه میشود. ( b/409716532 )
- رفع اشکالی که باعث میشود کارگرانی که دارای محدودیتهای شبکه هستند بهدلیل برآورده نشدن محدودیتها، بهسرعت اجرا نشوند، حتی اگر شبکه و قابلیتها در دسترس بودند. ( b/423403088 )
نسخه 2.10.1
23 آوریل 2025
androidx.work:work-*:2.10.1 منتشر شد. نسخه 2.10.1 شامل این commit ها است.
رفع اشکال
- امکان حذف
TooManyRequestsExceptionاز ثبت نامNetworkCallbackتوسطWorkManagerکه برای ردیابی محدودیت ها استفاده می شود را کاهش دهید. ( b/231499040 , b309d5 ).
نسخه 2.10.0
30 اکتبر 2024
androidx.work:work-*:2.10.0 منتشر شد. نسخه 2.10.0 شامل این commit ها است.
تغییرات قابل توجه از نسخه 2.9.1
- برچسبهای ردیابی از
WorkManagerبه Jobs اضافه شده است که درک «adb shell dumpsys jobscheduler» را بسیار سادهتر میکند، زیرا حاوی نام Worker در حال اجرا است. بخشهای Trace نیز در اطراف بخشهای کلیدیWorkManagerاضافه میشوند. -
Configuration.workerCoroutineContextبرای کنترل توزیع کننده که در آنCoroutineWorkerاجرا می شود به آن اضافه شد. - توسعه دهندگان می توانند
NetworkRequestبه عنوان یک محدودیت برای یک کارگر از طریق روشConstraints.setRequiredNetworkRequestتعیین کنند. این امکان کنترل دقیق تری بر روی شبکه ای که این کارگر باید اجرا کند را فراهم می کند. -
WorkManager2.10.0 اکنون با SDK 35 کامپایل شده است و شامل تغییرات مختلفی برای سازگاری با SDK 35 است.
نسخه 2.10.0-rc01
24 اکتبر 2024
androidx.work:work-*:2.10.0-rc01 منتشر شد. نسخه 2.10.0-rc01 حاوی این commit ها است.
نسخه 2.10.0-beta01
2 اکتبر 2024
androidx.work:work-*:2.10.0-beta01 منتشر شد. نسخه 2.10.0-beta01 حاوی این تعهدات است.
نسخه 2.10.0-alpha04
18 سپتامبر 2024
androidx.work:work-*:2.10.0-alpha04 منتشر شد. نسخه 2.10.0-alpha04 حاوی این commit ها است.
تغییرات API
- دلیل توقف
STOP_REASON_FOREGROUND_SERVICE_TIMEOUTرا برای زمانی که یک کارگر پیشزمینه به دلیل وقفه زمانی اجرا متوقف میشود، بر اساس نوع سرویس پیشزمینه اضافه کنید. ( Ibd0af )
نسخه 2.10.0-alpha03
4 سپتامبر 2024
androidx.work:work-*:2.10.0-alpha03 منتشر شد. نسخه 2.10.0-alpha03 حاوی این commit ها است.
ویژگی های جدید
- برچسبهای ردیابی از
WorkManagerبه Jobs اضافه شده است که درک «adb shell dumpsys jobscheduler» را بسیار سادهتر میکند، زیرا حاوی نام Worker در حال اجرا است. بخشهای Trace نیز در اطراف بخشهای کلیدیWorkManagerاضافه میشوند.
تغییرات API
- WorkManager 2.10.0 اکنون با SDK 35 کامپایل شده است.
- زمانی که
WorkManagerstopSelf()فراخوانی نمیکند، کارگران پیشزمینه از نوع «سرویس کوتاه» و «همگامسازی داده» به پایان میرسند و باعث ایجاد ANR میشوند. این اصلاح فقط برای دستگاههای دارای API 34 و 35 اعمال میشود که در آنها انواع خدمات پیشزمینه معرفی شدهاند. ( ca06b2 , b/364508145 ) - API های
WorkerParametersجدید که امکان تغییر فرآیند راه دوری را کهWorkerهنگام استفاده ازWorkerFactoryبه آن متصل می شود، می دهد. ( Ibdc8a ، Ie8a90 ، I7373f )
رفع اشکال
- خرابی ناشی از تلاش
WorkManagerبرای راهاندازی مجدد یک کارگر طولانیمدت (یعنی کارگر پیشزمینه) را برطرف کنید، زمانی که نوع پیشزمینه کار دارای مجوزهای پیشنیاز Android 14 بود که لغو شده بودند. ( b/333957914 ) - طرح دستی دسترسی به APIهای پلتفرم جدید حذف شد زیرا این به طور خودکار از طریق مدلسازی API هنگام استفاده از R8 با AGP 7.3 یا جدیدتر (مثلا R8 نسخه 3.3) و برای همه ساختها هنگام استفاده از AGP 8.1 یا بالاتر (به عنوان مثال D8 نسخه 8.1) اتفاق میافتد. به مشتریانی که از AGP استفاده نمیکنند، توصیه میشود به نسخه 8.1 یا بالاتر D8 بهروزرسانی کنند. برای جزئیات بیشتر به این مقاله مراجعه کنید. ( Ia60e0 , b/345472586 )
نسخه 2.10.0-alpha02
17 آوریل 2024
androidx.work:work-*:2.10.0-alpha02 منتشر شد. نسخه 2.10.0-alpha02 حاوی این commit ها است.
تغییرات API
- قابلیت انتشار بازه های ردیابی از طریق یک
@RestrictToTracerقابل تنظیم درWorkManagerاضافه شده است. ( I17d7f , b/260214125 ) -
Configuration.workerCoroutineContextبرای کنترل توزیع کننده که در آنCoroutineWorkerاجرا می شود به آن اضافه شد. این کمک می کند تا به طور کامل از استفاده ازDispatchers.DefaultدرWorkManagerاجتناب شود. ( Icd1b7 ) - اضافه کردن کنترلکنندههای استثنای سفارشی برای Workers ( Ib1b74 , b/261190695 )
-
OneTimeWorkRequest.BuilderوPeriodicWorkRequest.Builderاکنون می توانند باKClassبه جایClassساخته شوند:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()( Ib55f6 ) - کلاس
WorkManagerبه کاتلین منتقل شد. اکنون روشهایی کهLiveData،ListenableFutureیاFlowرا برمیگردانند، اطلاعات پوچپذیری صحیحی را ارائه میکنند. اگر مفروضات پوچ بودن در آن کد نادرست بود، ممکن است نیاز به تغییر در کد منبع مشتری داشته باشد. ( If6757 )
نسخه 2.10.0-alpha01
24 ژانویه 2024
androidx.work:work-*:2.10.0-alpha01 منتشر شد. نسخه 2.10.0-alpha01 حاوی این commit ها است.
ویژگی های جدید
- توسعه دهندگان می توانند
NetworkRequestبه عنوان یک محدودیت برای یک کارگر از طریق روشConstraints.setRequiredNetworkRequestتعیین کنند. این امکان کنترل دقیق تری بر روی شبکه ای که این کارگر باید اجرا کند را فراهم می کند.
تغییرات API
- افزودن قابلیتی برای تعیین
NetworkRequestبه عنوان محدودیت. ( Id98a1 , b/280634452 )
نسخه 2.9
نسخه 2.9.1
7 آگوست 2024
androidx.work:work-*:2.9.1 منتشر شد. نسخه 2.9.1 شامل این commit ها است.
رفع اشکال
- خرابی ناشی از تلاش
WorkManagerبرای راهاندازی مجدد یک کارگر طولانیمدت (یعنی کارگر پیشزمینه) را برطرف کنید، زمانی که نوع پیشزمینه کار دارای مجوزهای پیشنیاز Android 14 بود که لغو شده بودند. ( b/333957914 )
نسخه 2.9.0
29 نوامبر 2023
androidx.work:work-*:2.9.0 منتشر شد. نسخه 2.9.0 حاوی این commit ها است.
تغییرات مهم از 2.8.0
- قابلیت مشاهده از طریق
Flow-s. به جایLiveData، پیشرفت Worker اکنون از طریق Flow از طریقWorkManager.getWorkInfosFlowو روشهای مشابه قابل مشاهده است. - اکنون
WorkManagerراهنمایی می کند که چرا یک کارگر قبلا متوقف شده است. از طریق متدgetStopReason()یا ازWorkInfoاز طریقgetStopReason()می توان آن را از خود کارگر جویا شد. - زمانبندی دقیق کارگران دورهای از طریق
setNextScheduleTimeOverride. این امکان محاسبه پویا برنامه کاری دورهای بعدی را فراهم میکند، که میتواند برای پیادهسازی ویژگیهای پیشرفته مانند زمانهای تازهسازی تطبیقی، رفتار امتحان مجدد سفارشی، یا ایجاد یک کارمند اخبار فید قبل از بیدار شدن کاربر هر روز صبح بدون جابجایی مورد استفاده قرار گیرد.ExistingPeriodicWorkPolicy.UPDATEباید با این تکنیکها استفاده شود تا از لغو یک کارگر فعلی در حین برنامهریزی بعدی جلوگیری شود. - تست WorkManager با تولید تطبیق رشته.
ExecutorsMode.PRESERVE_EXECUTORSمی توان درinitializeTestWorkManagerبرای حفظ مجری های تنظیم شده درConfigurationو استفاده از رشته اصلی واقعی استفاده کرد. - API های Coroutines مانند
CoroutineWorkerاز artifact اضافی work-runtime-ktx به artifact work-runtime اصلی منتقل شده اند. work-runtime-ktx اکنون خالی است.
تغییرات API
-
stopReasonبهWorkInfoاضافه شد. پس از اجرا شدن کارگر،stopReasonدر دسترس قرار می دهد. این می تواند در گزارشstopReasonبه روشی قابل استفاده مفید باشد، زیرا هنگامی که یک کارگر متوقف شود، خود یک برنامه می تواند خیلی سریع از بین برود. ( I21386 ) - اجازه دهید
Clockاز طریق پیکربندی تنظیم شود و برای اجرای توالی اجرای تستهای Worker استفاده شود. ( IC586e ) - متد
getStopReason()بهListenableWorkerاضافه شد که به دلیل توقف کارگر اشاره می کند. ( I07060 ) - اضافه شد
WorkManagerTestInitHelper#closeWorkDatabase()برای جلوگیری از هشدار Closeguard در مورد منابع لو رفته. ( Ia8d49 ) - سازنده
WorkInfoاکنون عمومی است، که می تواند در آزمایش مفید باشد. ( Ia00b6 , b/209145335 ) -
work-runtime-ktxاکنون خالی است،CoroutineWorkerو سایر ابزارهای خاص Kotlin اکنون در آرتیفکت اصلی کار در زمان اجرا در دسترس هستند. ( I71a9a ) - روش
setNextScheduleTimeOverrideاضافه شد که امکان تنظیم دقیق برنامه های کاری دوره ای را فراهم می کند ( I3b4da ) -
getNextScheduleTimeMillisبرای دریافت اطلاعات زمان اجرای برنامهریزیشده بهWorkInfoاضافه شد. ( I797e4 ) - تاخیر اولیه و اطلاعات دوره ای به
WorkInfoاضافه می شود. ( I52f2f ) - روش اضافه شده مشاهده کارگران از طریق جریان از طریق متدهای
getWorkInfosByTagFlow،getWorkInfoByIdFlow،getWorkInfosForUniqueWorkFlow،getWorkInfosFlow( If122a ) - توضیحات گم شده
@RequiresApi(...)به سازنده ها و ویژگی هایConstraintsاضافه شد. آنها اکنون با حاشیهنویسیهای مربوطه در تنظیمکنندهها درConstraints.Builderکه از نسخههای اولیهWorkManagerوجود داشت، تراز شدهاند. ( I6d7d2 ) -
WorkManagerاکنون محدودیت جداگانهای برای کارگران محتوای uri دارد تا به آنها اسلات تضمینی درJobSchedulerبدهد تا از بهروزرسانیهای محتوای مفقود تحت بار زیاد جلوگیری کند. محدودیت را می توان از طریقConfiguration.Builder.setContentUriTriggerWorkersLimitپیکربندی کرد. ( IC128f ) - محدودیت ها به
WorkInfoاضافه می شوند. ( I162c0 )
نسخه 2.9.0-rc01
18 اکتبر 2023
androidx.work:work-*:2.9.0-rc01 منتشر شد. نسخه 2.9.0-rc01 حاوی این commit ها است.
- هیچ تغییری از آخرین نسخه بتا وجود ندارد
نسخه 2.9.0-beta01
6 سپتامبر 2023
androidx.work:work-*:2.9.0-beta01 منتشر شد. نسخه 2.9.0-beta01 حاوی این تعهدات است.
تغییرات API
- ثابت اضافه شده به دلایل توقف که توسط
WorkInfo.stopReasonوListenableWorker.stopReason( I0cc00 ) برگردانده شده است
نسخه 2.9.0-alpha02
26 جولای 2023
androidx.work:work-*:2.9.0-alpha02 منتشر شد. نسخه 2.9.0-alpha02 حاوی این commit ها است.
ویژگی های جدید
- اکنون
WorkManagerراهنمایی می کند که چرا یک کارگر قبلا متوقف شده است. از طریق متدgetStopReason()یا ازWorkInfoاز طریقgetStopReason()می توان آن را از خود کارگر جویا شد.
تغییرات API
-
stopReasonبهWorkInfoاضافه شد. پس از اجرای کارگر،stopReasonدر دسترس قرار می دهد. این می تواند در گزارشstopReasonبه روشی قابل استفاده مفید باشد، زیرا هنگامی که یک کارگر متوقف شود، خود یک برنامه می تواند خیلی سریع از بین برود. ( I21386 ) - اجازه دهید ساعت از طریق پیکربندی تنظیم شود و برای اجرای توالی اجرای تستهای Worker استفاده شود. ( IC586e )
- متد
getStopReason()بهListenableWorkerاضافه شد که به دلیل توقف کارگر اشاره می کند. ( I07060 ) - اضافه شد
WorkManagerTestInitHelper#closeWorkDatabase()برای جلوگیری از هشدار Closeguard در مورد منابع لو رفته. ( Ia8d49 )
رفع اشکال
- اضافه شدن قابلیت دور زدن
overrideNextScheduleTimeبا استفاده ازTestDriverو رفع مشکلات تستپذیری. ( IC2905 )
نسخه 2.9.0-alpha01
7 ژوئن 2023
androidx.work:work-*:2.9.0-alpha01 منتشر شد. نسخه 2.9.0-alpha01 حاوی این commit ها است.
ویژگی های جدید
- قابلیت مشاهده از طریق
Flow-s. به جایLiveData، پیشرفت Worker اکنون از طریق Flow از طریقWorkManager.getWorkInfosFlowو روشهای مشابه قابل مشاهده است. - زمانبندی دقیق کارگران دورهای از طریق
setNextScheduleTimeOverride. این امکان محاسبه پویا برنامه کاری دورهای بعدی را فراهم میکند، که میتواند برای پیادهسازی ویژگیهای پیشرفته مانند زمانهای تازهسازی تطبیقی، رفتار امتحان مجدد سفارشی، یا ایجاد یک کارمند اخبار فید قبل از بیدار شدن کاربر هر روز صبح بدون جابجایی مورد استفاده قرار گیرد.ExistingPeriodicWorkPolicy.UPDATEباید با این تکنیکها استفاده شود تا از لغو یک کارگر فعلی در حین برنامهریزی بعدی جلوگیری شود. - تست
WorkManagerبا تولید تطبیق رشته.ExecutorsMode.PRESERVE_EXECUTORSمی توان برای حفظ مجری های تنظیم شده درConfigurationو استفاده از رشته اصلی واقعی استفاده کرد. - API های Coroutines مانند
CoroutineWorkerاز artifact اضافیwork-runtime-ktxبه artifactwork-runtimeاصلی منتقل شده اند.work-runtime-ktxاکنون خالی است.
تغییرات API
- سازنده
WorkInfoاکنون عمومی است، که می تواند در آزمایش مفید باشد. ( Ia00b6 , b/209145335 ) -
work-runtime-ktxاکنون خالی است،CoroutineWorkerو سایر ابزارهای خاص kotlin اکنون در آرتیفکت اصلیwork-runtimeدر دسترس هستند. ( I71a9a ) - روش
setNextScheduleTimeOverrideاضافه شد که امکان تنظیم دقیق برنامه های کاری دوره ای را فراهم می کند ( I3b4da ) - نام
getEarliestRunTimeMillisبهgetNextScheduleTimeMillisتغییر یافت. ( I2bd7a ) - اطلاعات زمان اجرای برنامه ریزی شده بعدی به
WorkInfoاضافه می شود. ( I797e4 ) - تاخیر اولیه و اطلاعات دوره ای به
WorkInfoاضافه می شود. ( I52f2f ) - روش اضافه شده مشاهده کارگران از طریق جریان از طریق متدهای
getWorkInfosByTagFlow،getWorkInfoByIdFlow،getWorkInfosForUniqueWorkFlow،getWorkInfosFlow( If122a ) - حاشیه نویسی
@RequiresApi(...)گم شده به سازنده ها و ویژگی های Constraints اضافه شد. آنها اکنون با حاشیهنویسیهای مربوطه در تنظیمکنندهها درConstraints.Builderکه از نسخههای اولیهWorkManagerوجود داشت، تراز شدهاند. ( I6d7d2 ) -
WorkManagerاکنون محدودیت جداگانهای برای کارگران محتوای uri دارد تا به آنها اسلات تضمینی درJobSchedulerبدهد تا از بهروزرسانیهای محتوای مفقود تحت بار زیاد جلوگیری کند. Limit را می توان از طریقConfiguration.Builder.setContentUriTriggerWorkersLimitپیکربندی کرد. ( IC128f ) - محدودیت ها به
WorkInfoاضافه می شوند. ( I162c0 )
نسخه 2.8
نسخه 2.8.1
22 مارس 2023
androidx.work:work-*:2.8.1 منتشر شد. نسخه 2.8.1 حاوی این commit ها است.
رفع اشکال
- ANR در
RescheduleReceiverکه قبلاً دو پخش همزمان را به درستی مدیریت نمی کرد، رفع شد. ( b/236906724 )
نسخه 2.8.0
8 فوریه 2023
androidx.work:work-*:2.8.0 منتشر شد. نسخه 2.8.0 حاوی این commit ها است.
تغییرات مهم از 2.7.0
ویژگی های جدید
- توانایی به روز رسانی
WorkRequestsبه روشی غیر مزاحم اضافه شد، با حفظ زمان صف اولیه، زنجیره زدن و غیره. برای جزئیات بیشتر به پست وبلاگ مفصل در مورد این ویژگی و همچنین جاوادوکس برایWorkManager.updateWorkوExistingPeriodicWorkPolicy.UPDATEمراجعه کنید.
تغییرات API
-
WorkManager.updateWorkبرای بهروزرسانی کار با حفظ زمان صف اولیه و زنجیرهبندی آن اضافه شد. ( I9a248 , b/219446409 ) -
ExistingPeriodicWorkPolicy.UPDATEاضافه شد. این خطمشی بهروزرسانی یک اثر دورهای را با نام اجازه میدهد. شبیهREPLACEموجود است، اما کمتر مزاحم است: اگر در حال حاضر در حال اجرا باشد، کارگری را لغو نمیکند و زمان صف را حفظ میکند - تاخیر و دوره اولیه به جای زمان بهروزرسانی، از زمان صف اولیه محاسبه میشود.REPLACEمنسوخ شد تا سردرگمی بین نام بسیار مشابهREPLACEوUPDATEکاهش یابد. اگر همچنان میخواهید معنای قبلیREPLACEرا حفظ کنید، میتوانیدCANCEL_AND_REENQUEUEکه به تازگی اضافه شده است، که مشابهREPLACEاست، استفاده کنید. ( I985ed , b/219446409 ) - اضافه شدن قابلیت رهگیری استثناهای زمانبندی ارائه
Consumer<Throwable>از طریق setSchedulingExceptionHandler ) - قابلیت ارائه
Consumer<Throwable>را از طریق setInitializationExceptionHandler اضافه کرد تا مشخص شود آیا هنگام تلاش برای مقداردهی اولیه WorkManager مشکلی وجود دارد یا خیر. - راهنماهای درون خطی برای
OneTimeWorkRequestوPeriodicWorkRequestازandroidx.work:work-runtime-ktxبهandroidx.work:work-runtimeمنتقل شدند ( I0010f ، b/209145335 ) - روشهای کمکی
WorkQuery.fromIds،WorkQuery.fromStates،WorkQuery.fromUniqueWorkNames،WorkQuery.fromTagsبرای ایجاد مستقیمWorkQueryاضافه شدند. ( b/199919736 ) ( If48f2 , b/199919736 ) -
getForegroundInfoبهWorkerاضافه شد. ( IC1ead ) -
RxWorkerبرای RxJava 2 و RxJava 3 اکنون دارایsetForegroundبازگشتیCompletableاست که می تواند به جایsetForegroundInfoAsyncاستفاده شود کهListenableFutureبرمی گرداند. -
RxWorkerهر دو برای RxJava 2 و RxJava 3 دارایgetForegroundInfoبازگشتیSingleاست که می تواند به جایgetForegroundInfoAsyncاستفاده شود کهListenableFutureبرمی گرداند. ( b/203851459 ) - اکنون می توان محدودیت ها را مستقیماً به جای استفاده از
Constraints.Builderایجاد کرد که برای کاربران Kotlin راحت است. ( IDc390 , b/137568653 ) - قابلیت بررسی اینکه آیا
WorkManagerمقداردهی اولیه شده است یا خیر اضافه شده است. همچنین، یک APIgetConfiguration()برای توسعه دهندگان کتابخانه اضافه کرد تا پیکربندی را کهWorkManagerبا آن مقداردهی اولیه شده بود، دریافت کند. ( I6eff3 , b/212300336 )
رفع اشکال
- مشکلی در زمانبندی حریص که مانع از دویدن کارگران در هنگام بارگیری میشد، برطرف شد. ( I9686b , b/248111307 )
-
@RequiresPermissionبه APIهایی که نیاز به اعطای مجوزPOST_NOTIFICATIONSدر SDK 33 و بالاتر دارند اضافه شد. ( Ie542e , b/238790278 ) - هنگام استفاده از
suspendCancellableCoroutineلغوها را درCoroutineScopeبهListenableFutureمنتشر کنید.
نسخه 2.8.0-rc01
7 دسامبر 2022
androidx.work:work-*:2.8.0-rc01 منتشر شد. نسخه 2.8.0-rc01 حاوی این commit ها است.
ویژگی های جدید
- هیچ ویژگی جدیدی در این نسخه وجود ندارد. این عمدتا یک دست انداز نسخه است
نسخه 2.8.0-beta02
9 نوامبر 2022
androidx.work:work-*:2.8.0-beta02 منتشر شد. نسخه 2.8.0-beta02 حاوی این تعهدات است.
رفع اشکال
- روش
equalsثابت درWorkInfo، که قبلاً اطلاعات نسل جدید را در نظر نمی گرفت. ( 4977cc )
نسخه 2.8.0-beta01
5 اکتبر 2022
androidx.work:work-*:2.8.0-beta01 منتشر شد. نسخه 2.8.0-beta01 حاوی این تعهدات است.
رفع اشکال
- مشکلی در زمانبندی حریص که مانع از دویدن کارگران در هنگام بارگیری میشد، برطرف شد. ( I9686b , b/248111307 )
نسخه 2.8.0-alpha04
7 سپتامبر 2022
androidx.work:work-*:2.8.0-alpha04 منتشر شد. نسخه 2.8.0-alpha04 حاوی این commit ها است.
تغییرات API
-
WorkerInfo.getGeneration()وWorkerParameters.getGeneration()اضافه شدند که نسل یک worker را برمی گرداند. یک کارگر دارای چندین نسل است، اگر از طریقWorkManager.updateWorkیاWorkManager.enqueueUniquePeriodicWorkبا استفاده ازExistingPeriodicWorkPolicy.UPDATEبه روز شده باشد. توجه داشته باشید که اگر کارگر در حال حاضر در حال اجرا است، این روش ممکن است نسل جدیدتری را از کارگر فعلی در حال اجرا برگرداند، اگر به روز رسانی در حین اجرای کارگر رخ داده باشد. ( I665c5 , b/219446409 ) ( I128a9 , b/219446409 ) -
InitializationExceptionHandlerاضافه شد، یک Exception Handler که می تواند برای تعیین اینکه آیا هنگام تلاش برای مقداردهی اولیهWorkManagerمشکلی وجود دارد یا خیر استفاده شود. ( I061de )
نسخه 2.8.0-alpha03
10 آگوست 2022
androidx.work:work-*:2.8.0-alpha03 منتشر شد. نسخه 2.8.0-alpha03 حاوی این commit ها است.
ویژگی های جدید
- توانایی بهروزرسانی
WorkRequestsبه روشی غیر سرزده اضافه شد، با حفظ زمان صف اولیه، زنجیرهبندی و غیره. برای جزئیات بیشتر بهWorkManager.updateWorkوExistingPeriodicWorkPolicy.UPDATEمراجعه کنید.
تغییرات API
-
WorkManager.updateWorkبرای بهروزرسانی کار با حفظ زمان صف اولیه و زنجیرهبندی آن اضافه شد. ( I9a248 , b/219446409 ) -
ExistingPeriodicWorkPolicy.UPDATEاضافه شد. این خط مشی اجازه می دهد تا یک اثر دوره ای را با نام به روز کنید. شبیهREPLACEموجود است، اما کمتر مزاحم است: اگر در حال حاضر در حال اجرا باشد، کارگری را لغو نمیکند و زمان صف را حفظ میکند - تاخیر و دوره اولیه به جای زمان بهروزرسانی، از زمان صف اولیه محاسبه میشود.REPLACEمنسوخ شد تا سردرگمی بینREPLACEوUPDATEبا نام بسیار مشابه کاهش یابد. اگر همچنان میخواهید معنای قبلیREPLACEرا حفظ کنید، میتوانیدCANCEL_AND_REENQUEUEکه به تازگی اضافه شده است، که مشابهREPLACEاست، استفاده کنید. ( I985ed , b/219446409 ) - با تعریف
SchedulingExceptionHandler، امکان رهگیری استثناهای زمانبندی را اضافه کنید. ( I033eb ) - راهنماهای درون خطی برای
OneTimeWorkRequestوPeriodicWorkRequestازandroidx.work:work-runtime-ktxبهandroidx.work:work-runtimeمنتقل شدند ( I0010f ، b/209145335 )
رفع اشکال
-
@RequiresPermissionبه APIهایی که نیاز به اعطای مجوز POST_NOTIFICATIONS در SDK 33 و بالاتر دارند اضافه شد. ( Ie542e , b/238790278 )
نسخه 2.8.0-alpha02
6 آوریل 2022
androidx.work:work-*:2.8.0-alpha02 منتشر شد. نسخه 2.8.0-alpha02 حاوی این commit ها است.
تغییرات API
- اکنون می توان به جای استفاده از Builder که برای کاربران Kotlin راحت است، محدودیت ها را مستقیماً ایجاد کرد. ( IDc390 , b/137568653 )
- قابلیت بررسی اینکه آیا
WorkManagerمقداردهی اولیه شده است یا خیر اضافه شده است. همچنین، یک APIgetConfiguration()برای توسعه دهندگان کتابخانه اضافه کرد تا پیکربندی را کهWorkManagerبا آن مقداردهی اولیه شده بود، دریافت کند. ( I6eff3 , b/212300336 )
نسخه 2.8.0-alpha01
12 ژانویه 2022
androidx.work:work-*:2.8.0-alpha01 منتشر شد. نسخه 2.8.0-alpha01 حاوی این commit ها است.
تغییرات API
- متدهای کمکی
WorkQuery.fromStates،WorkQuery.fromUniqueWorkNames،WorkQuery.fromTagsبرای ایجاد مستقیم WorkQuery اضافه شدند. ( If48f2 , b/199919736 ) - روش های آزمایشی BuildCompat را برای SDK های آینده اضافه می کند ( Iafd82 , b/207528937 )
-
getForegroundInfoبهWorkerاضافه کنید. ( IC1ead ) - روشهای کمکی
WorkQuery.fromIdsبرای ایجاد WorkQuery مستقیماً از ID اضافه شد. ( Ie5bdf , b/199919736 ) - RxWorker اکنون
setForegroundبازگشتیCompletableدارد که می تواند به جایsetForegroundInfoAsyncکهListenableFutureبرمی گرداند استفاده شود. ( I85156 ) - RxWorker برای RxJava 2 اکنون
getForegroundInfoSingleدارد که می تواند به جایgetForegroundInfoAsyncاستفاده شود کهListenableFutureبرمی گرداند. ( I21c91 , b/203851459 ) - RxWorker برای RxJava 3 اکنون
getForegroundInfoSingleدارد که می تواند به جایgetForegroundInfoAsyncکهListenableFutureبرمی گرداند استفاده شود. ( I1ca8a ) - RxWorker اکنون
setForegroundبازگشتیCompletableدارد که می تواند به جایsetForegroundInfoAsyncکهListenableFutureبرمی گرداند استفاده شود. ( I992a3 , b/203851459 )
رفع اشکال
- هنگام استفاده از
suspendCancellableCoroutineلغوها را درCoroutineScopeبهListenableFutureمنتشر کنید. ( I77e63 )
نسخه 2.7
نسخه 2.7.1
17 نوامبر 2021
androidx.work:work-*:2.7.1 منتشر شد. نسخه 2.7.1 حاوی این commit ها است.
رفع اشکال
- هنگام استفاده از
suspendCancellableCoroutineلغوها درCoroutineScopeبهListenableFutureمنتشر می شوند. ( I77e63 ) - زمانی که درخواستهای کاری با تأخیر بهعنوان تسریعشده علامتگذاری میشوند، فوراً استثنا ایجاد میشود. bef1762
نسخه 2.7.0
13 اکتبر 2021
androidx.work:work-*:2.7.0 منتشر شد. نسخه 2.7.0 حاوی این commit ها است.
تغییرات مهم از 2.6.0
WorkManager یک API
WorkRequest.Builder.setExpedited(...)جدید را برای کمک به محدودیت های خدمات پیش زمینه در اندروید 12 معرفی می کند.هنگام استفاده از
setExpedited(...)، WorkManager به کارهای تسریع شده در JobScheduler با شروع Android 12 واگذار می کند، در حالی که با واگذاری به یک سرویس پیش زمینه، سازگاری با نسخه های قبلی اندروید را فراهم می کند.
نسخه 2.7.0-rc01
29 سپتامبر 2021
androidx.work:work-*:2.7.0-rc01 منتشر شد. نسخه 2.7.0-rc01 حاوی این commit ها است.
این نسخه مشابه androidx.work:work-*:2.7.0-beta01 است.
نسخه 2.7.0-beta01
1 سپتامبر 2021
androidx.work:work-*:2.7.0-beta01 منتشر شد. نسخه 2.7.0-beta01 حاوی این تعهدات است.
ویژگی های جدید
- هنگام راه اندازی WorkManager، اختلاف چند فرآیندی SQLite را کاهش دهید.
تغییرات API
- APIهای
@ExperimentalExpeditedWorkرا حذف کنید، با توجه به اینکه APIهای پلتفرم زیرین برای Android 12 (S) پایدار هستند. ( aosp/1792806 )
رفع اشکال
- برای کارگران تسریع شده که
getForegroundInfoAsync()را پیاده سازی نمی کنند، پیام خطای بهتری ارائه دهید. ( aosp/1809376 )
نسخه 2.7.0-alpha05
21 جولای 2021
androidx.work:work-*:2.7.0-alpha05 منتشر شد. نسخه 2.7.0-alpha05 حاوی این commit ها است.
این نسخه همچنین حاوی رفع اشکال از نسخه WorkManager 2.6.0-beta02 است.
نسخه 2.7.0-alpha04
2 ژوئن 2021
androidx.work:work-*:2.7.0-alpha04 منتشر شد.
این نسخه همچنین شامل تغییرات نسخه 2.6.0-beta01 است.
تغییرات API
-
ListenableWorker.setForegroundAsync()دیگر منسوخ نشده است. - توصیه می کنیم در صورت امکان از
WorkRequest.Builder.setExpedited(...)API استفاده کنید. برای پشتیبانی بهتر از موقعیتهایی که برنامه تحت محدودیتهای سرویس پیشزمینه نیست ، توسعهدهندگان میتوانند از APIListenableWorker.setForegroundAsync()استفاده کنند. - اگر
ListenableWorker.setForegroundAsync()فراخوانی شود، زمانی که برنامه در معرض محدودیتهای سرویس پیشزمینه باشد، ForegroundServiceStartNotAllowedException را پرتاب میکند.
رفع اشکال
- وقتی کارهای تسریع شده دوباره برنامه ریزی می شوند، دیگر تسریع نمی شوند. تبدیل به مشاغل معمولی می شوند.
نسخه 2.7.0-alpha03
21 آوریل 2021
androidx.work:work-*:2.7.0-alpha03 منتشر شد. نسخه 2.7.0-alpha03 حاوی این commit ها است.
ویژگی های جدید
From WorkManager
2.6.0-alpha02: پشتیبانی از Workers را اضافه می کند که می توانند در هر فرآیندی اجرا شوند. ( Iaf200 )از WorkManager
2.6.0-alpha02: یکRemoteCoroutineWorkerاضافه شد که پیاده سازیRemoteListenableWorkerاست که می تواند به یک فرآیند راه دور متصل شود. ( I30578 )
تغییرات API
- از WorkManager
2.6.0-alpha02: پشتیبانی از محدودیت شبکهTEMPORARILY_UNMETEREDاضافه شد. ( I08d5e ) - از WorkManager
2.6.0-alpha02:پشتیبانی کارگر چند فرآیندی برایsetProgressAsync(). ( Ib6d08 ) - از WorkManager
2.6.0-alpha02:WorkManagerInitializerعمومی کنید تا دیگرandroidx.startup.Initializerبتوانند از این موارد به عنوان وابستگی استفاده کنند. ( I5ab11 )
نسخه 2.7.0-alpha02
10 مارس 2021
androidx.work:work-*:2.7.0-alpha02 منتشر شد. نسخه 2.7.0-alpha02 حاوی این commit ها است.
رفع اشکال
- تغییرپذیری
PendingIntentرا آشکار کنید تا هنگام هدف قرار دادن Android 12 خرابی را برطرف کنید. ( b/180884673 )
نسخه 2.7.0-alpha01
18 فوریه 2021
androidx.work:work-*:2.7.0-alpha01 منتشر شد. نسخه 2.7.0-alpha01 حاوی این commit ها است.
ویژگی های جدید
WorkManager یک API
WorkRequest.Builder.setExpedited(...)جدید را برای در نظر گرفتن محدودیت های خدمات پیش زمینه در اندروید 12 معرفی می کند.وقتی برنامهها در پسزمینه هستند، دیگر نمیتوانند سرویس پیشزمینه را راهاندازی کنند. بنابراین، برای پشتیبانی بهتر از کارهای طولانی مدتی که قبلاً به چرخه عمر یک سرویس پیشزمینه وابسته بود، برنامهها میتوانند
WorkRequestرا بهعنوان تسریع شده علامتگذاری کنند.این API جایگزینی برای APIهای
setForegroundAsync(...)/setForeground(...)است که اکنون منسوخ شده اند.هنگام استفاده از
setExpedited(...)، WorkManager به کارهای تسریع شده درJobSchedulerبا شروع Android 12 واگذار میکند، در حالی که با واگذاری به خدمات پیشزمینه، سازگاری با نسخههای قبلی اندروید را فراهم میکند.
تغییرات API
- اضافه کردن پشتیبانی برای
WorkRequestهای سریع.
نسخه 2.6.0
نسخه 2.6.0
1 سپتامبر 2021
androidx.work:work-*:2.6.0 منتشر شد. نسخه 2.6.0 حاوی این commit ها است.
تغییرات مهم از 2.5.0
WorkManager اکنون از
androidx.startupبرای مقداردهی اولیه WorkManager استفاده می کند. اگر در گذشته ازtools:node="remove"ContentProviderکه برای مقداردهی اولیه WorkManager استفاده میشد استفاده میکردید، در عوض باید کارهای زیر را انجام دهید.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider><!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove" />پشتیبانی اضافه شده برای Workers که می تواند در هر فرآیندی اجرا شود. ( Iaf200 )
یک
RemoteCoroutineWorkerاضافه شد که اجرای RemoteListenableWorker است که می تواند به یک فرآیند راه دور متصل شود. ( I30578 )
نسخه 2.6.0-rc01
4 آگوست 2021
androidx.work:work-*:2.6.0-rc01 منتشر شد. نسخه 2.6.0-rc01 حاوی این commit ها است.
این نسخه مشابه androidx.work:work-*:2.6.0-beta02 است.
نسخه 2.6.0-beta02
21 جولای 2021
androidx.work:work-*:2.6.0-beta02 منتشر شد. نسخه 2.6.0-beta02 حاوی این تعهدات است.
رفع اشکال
-
RemoteWorkManagerاکنون به درستی ازRemoteWorkManagerServiceجدا می شود که بهRemoteWorkManagerServiceاجازه می دهد تا به درستی پاکسازی کند. aosp/1730694 -
RemoteListenableWorkerاکنون به درستی ازRemoteWorkerServiceجدا می شود که بهRemoteWorkerServiceاجازه می دهد تا به درستی پاکسازی کند. aosp/1743817 -
ForceStopRunnableاکنون فقط در فرآیند برنامه اولیه اجرا می شود. این یک بهینه سازی است و از مناقشات منابع برای برنامه هایی که از چندین فرآیند استفاده می کنند جلوگیری می کند. aosp/1749180 ، aosp/1761729
نسخه 2.6.0-beta01
2 ژوئن 2021
androidx.work:work-*:2.6.0-beta01 منتشر شد. نسخه 2.6.0-beta01 حاوی این تعهدات است.
این نسخه حاوی برخی بهبودهای جزئی در اسناد است. نسخه تا حد زیادی مشابه 2.6.0-alpha02 است.
نسخه 2.6.0-alpha02
21 آوریل 2021
androidx.work:work-*:2.6.0-alpha02 منتشر شد. نسخه 2.6.0-alpha02 حاوی این commit ها است.
ویژگی های جدید
پشتیبانی برای Workers اضافه می کند که می تواند در هر فرآیندی اجرا شود. ( Iaf200 )
یک
RemoteCoroutineWorkerاضافه شد که اجرایRemoteListenableWorkerاست که می تواند به یک فرآیند راه دور متصل شود. ( I30578 )
تغییرات API
- پشتیبانی از محدودیت شبکه
TEMPORARILY_UNMETEREDاضافه شد. ( I08d5e ) - پشتیبانی کارگر چند فرآیندی برای
setProgressAsync(). ( Ib6d08 ) -
WorkManagerInitializerعمومی کنید تا سایرandroidx.startup.Initializerبتوانند از اینها به عنوان وابستگی استفاده کنند. ( I5ab11 )
نسخه 2.6.0-alpha01
24 مارس 2021
androidx.work:work-*:2.6.0-alpha01 منتشر شد. نسخه 2.6.0-alpha01 حاوی این commit ها است.
ویژگی های جدید
WorkManagerاکنون ازandroidx.startupبرای مقداردهی اولیه WorkManager استفاده می کند. قبلاً این کار توسطandroidx.work.impl.WorkManagerInitializerانجام می شد. ( aosp/1608813 )اگر در گذشته از
tools:node="remove"ContentProviderاستفاده میکردید که برای مقداردهی اولیه چرخه حیات فرآیند استفاده میشد، در عوض باید کارهای زیر را انجام دهید.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.impl.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>(یا)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
تغییرات API
- یک API
Result.getOutputData()اضافه کنید کهoutputDataListenableWorker را برمیگرداند. ( Ie51e3 )
رفع اشکال
- یک راه حل برای یک اشکال OEM اضافه کنید که باعث می شود هنگام استفاده از
AlarmManagerAPI یکSecurityExceptionایجاد شود. ( aosp/1587518 )
نسخه 2.5.0
نسخه 2.5.0
27 ژانویه 2021
androidx.work:work-*:2.5.0 منتشر شد. نسخه 2.5.0 شامل این commit ها است.
تغییرات عمده از 2.4.0
- یک مصنوع جدید
:work:work-multiprocessبرای برنامه هایی که از چندین فرآیند استفاده می کنند. این کار با یکسان کردن زمانبندی درخواست کار در یک فرآیند واحد، دستاوردهای عملکردی را معرفی میکند.- برای استفاده از
work-multiprocess، یک وابستگی به:implementation "androidx.work:work-multiprocess:2.5.0"تعریف کنید. - یک فرآیند اولیه را با استفاده از Configuration.Builder.setDefaultProcessName(String) تعیین کنید.
- هنگام استفاده از
work-multiprocessشما همچنین می خواهید از RemoteWorkManager برای مدیریتWorkRequestخود استفاده کنید. RemoteWorkManager همیشه به فرآیند تعیین شده دسترسی پیدا می کند. زمانبندی در فرآیند نیز در فرآیند تعیین شده اجرا می شود.
- برای استفاده از
- گاهی اوقات،
ActivityManagerنمی تواند نمونهJobServiceرا برای شروع یک کار نمونه سازی کند. این باعث می شود که کار اصلی به دلیل یک اشکال پلتفرم بی سر و صدا حذف شود.WorkManagerاکنون تضمین می کند که برای هرWorkRequestزمانی که یکApplicationبا تطبیق کارها مقداردهی اولیه می شود، کارهای پشتیبان وجود دارد. این امر قابلیت اطمینان اجرای کار را تا حد زیادی بهبود می بخشد. ( b/172475041 , aosp/1489577 ) -
WorkManagerرشد پایگاه داده را با کاهش مدت زمان بافری کهWorkRequestها پس از تکمیلWorkRequestردیابی می کنند، محدود می کند. مدت زمان قبل7روز بود. به1روز کاهش یافته است + مدت نگهداری نتایج برای حداقل . ( aosp/1419708 ) - The
TestListenableWorkerBuildernow supports the reified class extendingListenableWorkerto make testing easier. ( aosp/1443299 , b/169787349 ) - WorkManager inspector is now available when using Android Studio Arctic Fox.
Version 2.5.0-rc01
13 ژانویه 2021
androidx.work:work-*:2.5.0-rc01 is released. Version 2.5.0-rc01 contains these commits.
رفع اشکال
- Fixed a bug where
getWorkInfosLiveDatawas not correctly getting invalidated after entities were updated when using theWorkQuerybased API. ( aosp/1540566 , b/173769028 ) - Fixed a bug where database transactions were not being marked as successful in some rare cases. This causes issues on some Motorola devices. ( aosp/1535368 , b/175944460 )
- Fixed a bug to ignore
NoSuchElementExceptions when trying to unbind from a dead process. ( aosp/1530589 ) - Improve
ConstraintTrackingWorkerto only stop aListenableWorkerif it's not already been stopped. ( aosp/1496844 , b/172946965 ) - Update androidx.work libraries to target Java 8 ( Ibd2f2 )
Version 2.5.0-beta02
2 دسامبر 2020
androidx.work:work-*:2.5.0-beta02 is released. Version 2.5.0-beta02 contains these commits.
رفع اشکال
- Fixed a bug in
androidx.work:work-multiprocesswhere WorkManager inadvertently blocked the calling thread when trying to bind to the designated process. ( aosp/1475538 ) - Fixed a bug where
PeriodicWorkRequests were not being reconciled correctly. ( b/172475041 , aosp/1489577 ) - Added a workaround for a platform bug when stopping the foreground service when using the
setForeground*APIs. ( b/170924044 , aosp/1489901 )
Version 2.5.0-beta01
28 اکتبر 2020
androidx.work:work-*:2.5.0-beta01 is released. Version 2.5.0-beta01 contains these commits.
ویژگی های جدید
-
WorkManagerautomatically throttles the number ofWorkRequests that can be picked up by the in-process scheduler. The requests are still executed in FIFO order. ( aosp/1455228 ) -
WorkManagerattempts to recover when the application's datastore is in a bad state. ( aosp/1463103 )
رفع اشکال
- When
ListenableWorkers are interrupted, mark themENQUEUEDimmediately so they can be subsequently rescheduled. ( aosp/1455618 , b/170273988 )
Version 2.5.0-alpha03
14 اکتبر 2020
androidx.work:work-*:2.5.0-alpha03 is released. Version 2.5.0-alpha03 contains these commits.
تغییرات API
-
TestListenableWorkerBuilderandTestWorkerBuilderdo not use raw types. ( I883ad , b/169787349 )
رفع اشکال
- Use
ApplicationInfoto determine the name of the default app process. ( b/168716641 , aosp/1429950 ) - Fix the visibility rules for
RemoteWorkManagerandRemoteWorkContinuation. These APIs are no-longer marked as@Restricted. ( aosp/1432091 ) - Fix proguard rules for
:work:work-multiprocess. ( aosp/1432091 ) - Improve notification lifecycles for long running work bound to a foreground service. ( b/168502234 , aosp/1431331 )
Version 2.5.0-alpha02
16 سپتامبر 2020
androidx.work:work-*:2.5.0-alpha02 is released. Version 2.5.0-alpha02 contains these commits.
ویژگی های جدید
- Add an API to WorkQuery to be able to use
ids to queryWorkInfos. ( aosp/1412372 , b/157335295 ) - WorkManager better supports apps that use multiple processes with a new artifact (
androidx.work:work-multiprocess:*). This new artifact helps solve a few problems that large apps encounter including:- WorkManager typically needs to be initialized in every app process. This is not great because there is increased SQLite contention which in turn causes other problems. WorkManager now has new APIs which can be used to designate a primary app process using
Configuration#setDefaultProcessName(processName). TheprocessNameis a fully qualified process name which looks likepackageName:processName(egcom.example:remote). - A set of new APIs:
RemoteWorkManagerandRemoteWorkContinuationtoenqueue,cancelandquerywork requests. These APIs do not includeLiveDatavariants to avoid SQLite contention across multiple-processes. All calls toenqueue,cancelandqueryare forwarded to aprimaryapp process using AIDL and return a fluentListenableFuture. ( aosp/1392657 , aosp/1411210 , aosp/1412215 , aosp/1417713 )
- WorkManager typically needs to be initialized in every app process. This is not great because there is increased SQLite contention which in turn causes other problems. WorkManager now has new APIs which can be used to designate a primary app process using
تغییرات API
- WorkManager now prunes completed
WorkRequests that have no incomplete dependencies more aggressively. The buffer duration changed from7days to1day. ( aosp/1419708 )
رفع اشکال
- WorkManager now reconciles jobs proactively so
WorkRequests andJobSchedulerjobs are in sync whenWorkManageris initialized. ( aosp/1412794 , b/166292069 )
Version 2.5.0-alpha01
19 آگوست 2020
androidx.work:work-*:2.5.0-alpha01 is released. Version 2.5.0-alpha01 contains these commits.
ویژگی های جدید
- Changes to internal APIs that allow us to provide better tooling with
WorkManagergoing forward. Stay tuned for additional updates.
رفع اشکال
- Handle
SecurityExceptions when tracking network state on some devices. ( aosp/1396969 )
External Contribution
- Fix documentation for
ArrayCreatingInputMergerby Zac Sweers ( github/43 ).
نسخه 2.4.0
نسخه 2.4.0
22 جولای 2020
androidx.work:work-*:2.4.0 is released. Version 2.4.0 contains these commits.
Major changes since 2.3.0
-
WorkManagers in-process scheduler is now more capable. Previously, the in-processSchedulerwould only consider executing work that was not delayed and whose constraints were met. Now, the in-process scheduler tracksWorkRequests which might be executed in the future, including PeriodicWorkRequests. The in-processScheduleralso does not observe scheduling limits (but is still restricted to the size of theExecutorbeing used by WorkManager). This means that the application can now execute a lot more WorkRequests when the app is in the foreground. To manage execution of delayed work in the foreground,WorkManageralso introduces a new configurableRunnableScheduler. ( aosp/1185778 ) - WorkManager now supports RxJava 3. To use RxJava 3, you should include the following dependency:
implementation "androidx.work:work-rxjava3:2.4.0". ( aosp/1277904 ) - Added the ability to query for
WorkInfos by using aWorkQuery. This is useful when developers want to queryWorkInfos by a combination of multiple attributes. For more information look atWorkQuery.Builder.fromStates(...),WorkQuery.Builder. fromTags(...)orWorkQuery.Builder.fromUniqueWorkNames(...). ( aosp/1253230 , b/143847546 ) Add the ability to request diagnostic information from
WorkManagerusing:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"This provides a lot of useful information including:
- WorkRequests that were completed in the last 24 hours.
- WorkRequests that are currently RUNNING.
- Scheduled WorkRequests. ( aosp/1235501 )
Add
ExistingWorkPolicy.APPEND_OR_REPLACEwhich is similar toAPPEND, but replaces a chain that has cancelled or failed prerequisites. ( b/134613984 , aosp/1199640 )Provide the ability to add a custom
RunnableSchedulerto track WorkRequests that need to be executed in the future. This is used by the in-process Scheduler. ( aosp/1203944 )Add support for dynamically adding factories to delegate to, when using a
DelegatingWorkerFactory. ( b/156289105 , aosp/1309745 )Align tracking for
BATTERY_NOT_LOWconstraints more closely with the platform. ( aosp/1312583 )The in-process scheduler now uses better APIs to determine the name of the process. This is useful to better support apps that use multiple-processes. ( aosp/1324732 )
New Lint rules which enforce:
- Use of the right
foregroundServiceTypewhen usingsetForegroundAsync()APIs. ( b/147873061 , aosp/1215915 ) - Specifying JobScheduler ids that WorkManager should use when using JobService APIs directly. aosp/1223567
- Added a new lint rule that ensures that
ListenableWorkerimplementations are nowpublicwhen using the defaultWorkerFactory. ( aosp/1291262 )
- Use of the right
Calls to
setForegroundAsync()that do not complete before completion of aListenableWorkerwill now be signalled via anIllegalStateExceptionon the returnedListenableFuture. ( aosp/1262743 )Fix a bug where the
ForegroundServiceis not stopped after a foregroundWorkeris interrupted. ( b/155579898 , aosp/1302153 )Fix a bug where
WorkManagerattempts to execute multiple instances of aWorkerbound to a Foreground Service ( b/156310133 , aosp/1309853 )
Version 2.4.0-rc01
24 ژوئن 2020
androidx.work:work-*:2.4.0-rc01 is released. Version 2.4.0-rc01 contains these commits.
رفع اشکال
- The in-process scheduler now uses better APIs to determine the name of the process. This is useful to better support apps that use multiple-processes. ( aosp/1324732 )
Version 2.4.0-beta01
20 مه 2020
androidx.work:work-gcm:2.4.0-beta01 , androidx.work:work-runtime:2.4.0-beta01 , androidx.work:work-runtime-ktx:2.4.0-beta01 , androidx.work:work-rxjava2:2.4.0-beta01 , and androidx.work:work-testing:2.4.0-beta01 are released. Version 2.4.0-beta01 contains these commits.
رفع اشکال
- Fix a bug where the
ForegroundServiceis not stopped after a foregroundWorkeris interrupted. ( b/155579898 , aosp/1302153 ) - Fix a bug where
WorkManagerattempts to execute multiple instances of aWorkerbound to a Foreground Service ( b/156310133 , aosp/1309853 ) - Add support for dynamically adding factories to delegate to, when using a
DelegatingWorkerFactory. ( b/156289105 , aosp/1309745 ) - Align tracking for
BATTERY_NOT_LOWconstraints more closely with the platform. ( aosp/1312583 )
Version 2.4.0-alpha03
29 آوریل 2020
androidx.work:work-*:2.4.0-alpha03 is released. Version 2.4.0-alpha03 contains these commits.
ویژگی های جدید
- WorkManager now supports RxJava 3. To use RxJava 3, you should include the following dependency:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03". ( aosp/1277904 ) - Added a new lint rule that ensures that
ListenableWorkerimplementations are nowpublicwhen using the defaultWorkerFactory. ( aosp/1291262 )
تغییرات API
- Calling
setProgressAsync()after aListenableWorkerhas finished execution will now signal anExceptionvia theListenableFuture. ( aosp/1285494 ) -
WorkQuery.Builderis now markedfinal. ( aosp/1275037 ) -
WorkQuery.Builderfactory methodswithStates,withTagsandwithUniqueWorkNameshave been renamed tofromStates,fromTagsandfromUniqueWorkNamesrespectively. ( aosp/1280287 )
رفع اشکال
- Ignore
SecurityExceptions when tracking network state of a device. ( b/153246136 , aosp/1280813 )
Version 2.4.0-alpha02
1 آوریل 2020
androidx.work:work-*:2.4.0-alpha02 is released. Version 2.4.0-alpha02 contains these commits.
ویژگی های جدید
- Added a new Lint rule that warns when
WorkRequests requires bothConstraints.setRequiresCharging(...)andConstraints.setRequiresDeviceIdle(...). Some devices are never charging and idle at the same time. So such requests would run less frequently than expected. ( aosp/1253840 )
تغییرات API
Added the ability to query for
WorkInfos by using aWorkQuery. This is useful when developers want to queryWorkInfos by a combination of multiple attributes. For more information look atWorkQuery.Builder withStates(...),WorkQuery.Builder withTags(...)orWorkQuery.Builder withUniqueWorkNames(...). ( aosp/1253230 , b/143847546 )Calls to
setForegroundAsync()that do not complete before completion of aListenableWorkerwill now be signalled via anIllegalStateExceptionon the returnedListenableFuture. ( aosp/1262743 )
رفع اشکال
- Fixed the lint rule that checks for invalid interval durations for
PeriodicWorkRequests. ( aosp/1254846 , b/152606442 )
Version 2.4.0-alpha01
4 مارس 2020
androidx.work:work-*:2.4.0-alpha01 is released. Version 2.4.0-alpha01 contains these commits.
ویژگی های جدید
WorkManagers in-process scheduler is now more capable. Previously, the in-process Scheduler would only consider executing work that was not delayed and whose constraints were met. Now, the in-process scheduler tracksWorkRequests which might be executed in the future, includingPeriodicWorkRequests. The in-process Scheduler also does not observe scheduling limits (but is still restricted to the size of theExecutorbeing used by WorkManager). This means that the application can now execute a lot moreWorkRequests when the app is in the foreground. ( aosp/1185778 )Added the ability to request diagnostic information from WorkManager using
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>". This provides a lot of useful information including:- WorkRequests that were completed in the last 24 hours.
- WorkRequests that are currently RUNNING.
- Scheduled WorkRequests. ( aosp/1235501 )
New Lint rules which enforce:
- Use of the right
foregroundServiceTypewhen usingsetForegroundAsync()APIs. ( b/147873061 , aosp/1215915 ) - Specifying
JobSchedulerids thatWorkManagershould use when usingJobServiceAPIs directly. ( aosp/1223567 )
- Use of the right
تغییرات API
Add
ExistingWorkPolicy.APPEND_OR_REPLACEwhich is similar toAPPEND, but replaces a chain that has cancelled or failed prerequisites. ( b/134613984 , aosp/1199640 )Provide the ability to add a custom
RunnableSchedulerto trackWorkRequests that need to be executed in the future. This is used by the in-process Scheduler. ( aosp/1203944 )
رفع اشکال
- Deprecated
setProgress()inRxWorkerbecause it previously returned aSingle<Void>which is an impossible type. Added a new APIsetCompletableProgress()which returns aCompletableinstead; and added new Lint rules which help migrate to the new APIs. ( b/150080946 , aosp/1242665 )
Version 2.3.4
Version 2.3.4
18 مارس 2020
androidx.work:work-*:2.3.4 is released. Version 2.3.4 contains these commits.
رفع اشکال
- Fixed a bug which would cause multiple instances of a long running
Workers to run, after exceeding the 10 minute execution window. ( aosp/1247484 , b/150553353 ) - Fix for WorkManager's lint
IssueRegistry. Thank you @ZacSweers from Slack, for the contribution. ( aosp/1217923 )
نسخه 2.3.3
نسخه 2.3.3
4 مارس 2020
androidx.work:work-*:2.3.3 is released. Version 2.3.3 contains these commits.
رفع اشکال
- Fixed a bug where if a
Workerwas interrupted, it would not get rescheduled correctly. ( b/150325687 , aosp/1246571 )
نسخه 2.3.2
نسخه 2.3.2
19 فوریه 2020
androidx.work:work-*:2.3.2 are released. Version 2.3.2 contains these commits.
رفع اشکال
- Fixes an issue where WorkManager exceeds the 100 job limit in JobScheduler in rare cases. ( aosp/1226859 , b/149092520 )
- Fix for a race condition in ConstraintControllers. ( aosp/1220100 )
- Improved the management foreground Service lifecycle for long running Workers. ( aosp/1226295 )
- Improved the management of cancellation of Notifications for long running Workers upon Worker cancellation. ( aosp/1228346 )
نسخه 2.3.1
نسخه 2.3.1
5 فوریه 2020
androidx.work:work-*:2.3.1 is released. Version 2.3.1 contains these commits .
رفع اشکال
- Better manage the lifecycle of
Notifications for long runningWorkers that run when a foregroundServiceis active. ( aosp/1218539 , b/147249312 ) -
WorkManagernow depends onandroidx.sqlite:sqlite-framework:2.1.0stable. ( aosp/1217729 ) - Added lint rules to ensure that a
foregroundServiceTypeis specified in theAndroidManifest.xmlwhen usingforegroundServiceTypes inForegroundInfo. ( aosp/1214207 , b/147873061 )
نسخه 2.3.0
نسخه 2.3.0
22 ژانویه 2020
androidx.work:work-*:2.3.0 is released with no changes since 2.3.0-rc01 . Version 2.3.0 contains these commits .
Important changes since 2.2.0
- Support for long running or important work via
ListenableWorker#setForegroundAsync(). - Support for Worker Progress via
ListenableWorker#setProgressAsync(). - WorkManager now packages additional lint rules as part of the library which helps catch bugs early.
Version 2.3.0-rc01
8 ژانویه 2020
androidx.work:work-*:2.3.0-rc01 is released. Version 2.3.0-rc01 contains these commits .
This release is identical to 2.3.0-beta02
رفع اشکال
- The
work-testingartifact now defines anapidependency onwork-runtime-ktx. ( aosp/1194410 )
Version 2.3.0-beta02
18 دسامبر 2019
androidx.work:work-*:2.3.0-beta02 is released. Version 2.3.0-beta02 contains these commits .
ویژگی های جدید
- Added a better error message for non-recoverable SQLite exceptions. ( aosp/1185777 )
- Added a lint rule which ensures that the content provider
androidx.work.impl.WorkManagerInitializeris removed from theAndroidManifest.xmlwhen using on demand initialization. ( aosp/1167007 ) - Added a lint warning when
enqueue()is used for aPeriodicWorkRequestinstead ofenqueueUniquePeriodicWork(). ( aosp/1166032 )
API تغییر می کند
-
ForegroundInfonow requires you to specify thenotificationIdto be used when usingListenableWorker.setForegroundAsync(). This is a breaking change. This allows you to run multiple long runningWorkers in parallel.WorkManageralso better manages lifetimes of the providedNotifications. ( b/145473554 , aosp/1181208 , asop/1181216 , asop/1183577 )
رفع اشکال
- Fixed a bug in the AlarmManager implementation where alarms were not being cleaned up correctly. ( aosp/1156444 )
- Fixed a bug where an empty list of
WorkRequests would cause an incorrectWorkContinuationchain to be built. ( b/142835274 , aosp/1157051 )
Dependency changes
- WorkManager now uses Room 2.2.2.
Version 2.3.0-beta01
20 نوامبر 2019
androidx.work:work-*:2.3.0-beta01 is released. Version 2.3.0-beta01 contains these commits .
ویژگی های جدید
- Added a new lint rule which prevents developer errors due to incorrect implementation of
androidx.work.Configuration.Providerwhen using on-demand initialization. aosp/1164559
Version 2.3.0-alpha03
23 اکتبر 2019
androidx.work:work-*:2.3.0-alpha03 is released. Version 2.3.0-alpha03 contains these commits .
ویژگی های جدید
- Added
WorkManager.createCancelPendingIntent()API which makes it easy to cancelWorkRequests without having to register another component in theAndroidManifest.xml. This API makes it especially easy to cancelWorkRequests fromNotifications. We expect this to be paired with the new foreground APIs in 2.3.0. - WorkManager now depends on
androidx.room:*:2.2.0stable.
API تغییر می کند
- Renamed
ForegroundInfo.getNotificationType()toForegroundInfo.getForegroundServiceType()to be more consistent with the underlying platform APIs. ( b/142729893 , aosp/1143316 )
رفع اشکال
- Fixed a bug which is caused by an unnecessary call to
setTransactionSuccessful()outside of a transaction. This happens for rare migrations. ( b/142580433 , aosp/1141737 )
Version 2.3.0-alpha02
9 اکتبر 2019
androidx.work:work-*:2.3.0-alpha02 is released. Version 2.3.0-alpha02 contains these commits .
ویژگی های جدید
- WorkManager now supports running long running or important work that should be kept alive by the OS. For more information look at
ListenableWorker#setForegroundAsync()(orCoroutineWorker#setForeground()for Kotlin). ( aosp/1133636 )
API تغییر می کند
- The
containsKeyAPI inDatais renamed tohasKeyWithValueOfType. The corresponding extension method in thektxlibrary has also been renamed. ( b/141916545 )
رفع اشکال
- WorkManager schedules work fairly when the number of
WorkRequests enqueued approach scheduling limits . ( aosp/1105766 ) - WorkManager calls
ListenableWorker#onStopped()only if the work is not already completed. ( b/140055777 ) - WorkManager now removes progress information when a worker gets interrupted or reaches its terminal state. ( aosp/1114572 )
-
Datanow has a much more usefultoString()representation. ( b/140945323 ) -
Datanow has a betterequals()method. It also supportsdeepEqualsforArraytypes. ( b/140922528 ) - WorkManager now stores its internal database and preference files in a no backup directory. ( b/114808216 )
Version 2.3.0-alpha01
22 آگوست 2019
androidx.work:work-*:2.3.September 5, 20190-alpha01 is released. The commits included in this version can be found here .
ویژگی های جدید
-
ListenableWorkers can now set progress via thesetProgressAsync()API. Also added a correspondingsuspend-ingsetProgressAPI inCoroutineWorkerand asetProgressinRxWorkerwhich returns aSingle<Void>. With these new APIs Workers can convey progress information viaWorkInfowhich has a correspondinggetProgressAPI. ( b/79481554 ) -
Datahas acontainsKey()API which can be used to validate that input data toWorkers has keys with the expected type. ( b/117136838 ) -
Datacan now be serialized usingData.toByteArray()andData.fromByteArray(). Note that there are no versioning guarantees withDataso you should not persist it or use it for IPC between applications. They are only safe to be used between multiple processes of the same application. - Added the ability to specify an
InputMergerFactoryviaConfiguration.setInputMergerFactory. ( b/133273159 )
API تغییر می کند
- WorkManager will throw an instance of
IllegalStateExceptionif aWorkerFactoryreturns an instance ofListenableWorkerwhich has been previously invoked. ( b/139554406 ) - Documentation updates around
ListenableFuturecancellation and theonStopped()callback inListenableWorker. ( b/138413671 )
رفع اشکال
- The in-process Scheduler now ignores
WorkRequests with theidleconstraint. These requests are now only picked up byJobSchedulerwhen the device is actuallyidle. ( aosp/1089779 ) -
TestSchedulernow correctly uses the specifiedExecutorfor its internal task executor in tests. ( aosp/1090749 )
نسخه 2.2.0
نسخه 2.2.0
15 آگوست 2019
androidx.work:work-*:2.2.0 is released. The commits included in this version can be found here .
This release is identical to androidx.work:work-*:2.2.0-rc01 .
Important Changes in 2.2.0 from 2.1.0
androidx.work:work-gcm:2.2.0 is a new Maven artifact which supports the use of GCMNetworkManager as a scheduler when Google Play Services is available for API levels <= 22. This is an optional dependency that helps with more reliable and performant background processing on older API versions. If your app uses Google Play Services, add this dependency to your gradle file to automatically get GCMNetworkManager support. If Play Services is not available, WorkManager will continue to fall back to AlarmManager on older devices.
Version 2.2.0-rc01
30 جولای 2019
androidx.work:work-*:2.2.0-rc01 is released. The commits included in this version can be found here .
رفع اشکال
- Fixed a bug in the AlarmManager implementation that causes the Service to shutdown prematurely and resulting in a
RejectedExecutionExceptionin rare cases. ( aosp/1092374 ) ( b/138238197 ). - Added a workaround for a
NullPointerExceptionwhen usingJobSchedulerAPIs on some devices. ( aosp/1091020 ) ( b/138364061 ), ( b/138441699 )
Version 2.2.0-beta02
19 جولای 2019
androidx.work:work-*:2.2.0-beta02 is released. The commits included in this version can be found here .
رفع اشکال
- Removed unintentional jacoco dependency that was introduced in
2.2.0-beta01.
Version 2.2.0-beta01
17 جولای 2019
androidx.work:work-*:2.2.0-beta01 is released. The commits included in this version can be found here .
ویژگی های جدید
-
androidx.work:work-gcm:2.2.0-beta01is a new Maven artifact which supports the use of GCMNetworkManager as a scheduler when Google Play Services is available for API levels <= 22. This is an optional dependency that helps with more reliable and performant background processing on older API versions. If your app uses Google Play Services, add this dependency to your gradle file to automatically get GCMNetworkManager support. If Play Services is not available, WorkManager will continue to fall back to AlarmManager on older devices.
رفع اشکال
- Fix for
IllegalArgumentExceptionwhen tracking network state on Nvidia Shield K1 tablets. ( aosp/1010188 )
نسخه 2.1.0
نسخه 2.1.0
11 جولای 2019
androidx.work:work-*:2.1.0 is released. This release is identical to androidx.work:work-*:2.1.0-rc01 .
Important changes since 2.0.1
-
work-runtime-ktxnow requires Java 8. If you run into any issues, you can add the following to yourbuild.gradle:kotlinOptions { jvmTarget = "1.8" } - Added on-demand initialization for WorkManager, which will create WorkManager only when referenced. b/127497100 To set up your project for on-demand initialization:
- Disable the automatic initializer .
- Implement
Configuration.Provideron your customApplicationobject. - Change all references of
WorkManager.getInstance()toWorkManager.getInstance(Context). As part of this change, we have deprecatedWorkManager.getInstance(). It is always safer to call the newWorkManager.getInstance(Context)replacement, even if you're not doing on-demand initialization.
-
PeriodicWorkRequests now support initial delays. You can use thesetInitialDelaymethod onPeriodicWorkRequest.Builderto set an initial delay. b/111404867 - Added the ability to delegate to one or more registered
WorkerFactorys usingDelegatingWorkerFactory. b/131435993 - Added the ability to customize the
Executorused by WorkManager for all its internal book-keeping viaConfiguration.Builder.setTaskExecutor. - Added the ability to create unit testable
WorkerandListenableWorkerclasses by usingTestWorkerBuilderandTestListenableWorkerBuilderin thework-testingartifact.- Note that
work-testingnow pulls in Kotlin as a dependency and includes several Kotlin extensions by default.
- Note that
- Added run attempt count to
WorkInfo. b/127290461 -
Datatypes can now store and retrieve bytes and byte arrays. This does NOT change the maximum size ofDataobjects. - WorkManager now depends on
Room 2.1.0, which should fix some database issues.
Version 2.1.0-rc01
27 ژوئن 2019
androidx.work:work-*:2.1.0-rc01 is released. The commits included in this version can be found here .
رفع اشکال
- Fixed a bug which would cause an application to crash when executing jobs with
JobSchedulerwhile a backup was in progress b/135858602 .
Version 2.1.0-beta02
20 ژوئن 2019
androidx.work:work-*:2.1.0-beta02 is released. The commits included in this version can be found here .
رفع اشکال
-
TestListenableWorkerBuildernow uses the correctWorkerFactorywhen creating instances ofListenableWorker. b/135275844 - Fixed a bug which caused drifts in the execution windows for
WorkRequests due to process death. b/135272196
Version 2.1.0-beta01
13 ژوئن 2019
androidx.work:work-*:2.1.0-beta01 is released. The commits included in this version can be found here .
رفع اشکال
- WorkManager now depends on
Room 2.1.0, which should fix some database issues. - Removed some startup disk I/O on the main thread.
- Fixed a potential deadlock in constraint tracking. b/134361006
- Preemptively cancelled invalid jobs attributed to WorkManager. b/134058261
- Added some defensive calls to JobScheduler APIs for misbehaving devices.
Version 2.1.0-alpha03
5 ژوئن 2019
androidx.work:*:2.1.0-alpha03 is released.
رفع اشکال
- Improved documentation for
PeriodicWorkRequests. -
WorkManagerTestInitHelpernow uses the correct background executor for tests. - Fixes for SQLite issues when dealing with large transactions on some devices. ( b/130182503 )
- WorkManager's dependencies are now more granular. ( b/133169148 ).
- Workaround OEM specific bugs in the implementation of
JobSchedulerwhen scheduling jobs using WorkManager. - Improvements in the AlarmManager based scheduler around service lifetimes that previously caused rare crashes. ( b/133313734 )
Version 2.1.0-alpha02
16 مه 2019
WorkManager 2.1.0-alpha02 is released. This version contains several new APIs.
تغییرات API
PeriodicWorkRequests now support initial delays. You can use thesetInitialDelaymethod onPeriodicWorkRequest.Builderto set an initial delay. b/111404867Added the ability to delegate to one or more registered
WorkerFactorys usingDelegatingWorkerFactory. b/131435993Added the ability to customize the
Executorused by WorkManager for all its internal book-keeping viaConfiguration.Builder.setTaskExecutor.Improved documentation around
WorkRequest.keepResultsForAtLeast( b/130638001 ), on-demand initialization, andPeriodicWorkRequest.Builder( b/131711394 ).
Version 2.1.0-alpha01
24 آوریل 2019
WorkManager 2.1.0-alpha01 is released. This version contains several new APIs. Please note that starting with this version, there will be new features that won't get backported to the 1.x release. We recommend switching to 2.x.
تغییرات API
- Added on-demand initialization for WorkManager, which will create WorkManager only when referenced. b/127497100 To set up your project for on-demand initialization:
- Disable the automatic initializer .
- Implement
Configuration.Provideron your customApplicationobject. - Change all references of
WorkManager.getInstance()toWorkManager.getInstance(Context). As part of this change, we have deprecatedWorkManager.getInstance(). It is always safer to call the newWorkManager.getInstance(Context)replacement, even if you're not doing on-demand initialization.
- Added the ability to create unit testable
WorkerandListenableWorkerclasses by usingTestWorkerBuilderandTestListenableWorkerBuilderin thework-testingartifact.- Note that
work-testingnow pulls in Kotlin as a dependency, but also includes several Kotlin extensions by default.
- Note that
- Added run attempt count to
WorkInfo. b/127290461 -
Datatypes can now store and retrieve bytes and byte arrays. This does NOT change the maximum size ofDataobjects. - Deprecated
CoroutineWorker.coroutineContext. This field was incorrectly typed as aCoroutineDispatcher; you should no longer need it as you can go to the desired coroutineContext yourself in the body of the suspending function. -
RxWorker.createWork()andRxWorker.getBackgroundScheduler()are now annotated with@NonNullreturn types.
نسخه 2.0.1
نسخه 2.0.1
9 آوریل 2019
WorkManager 2.0.1 is released. This release is identical to 2.0.1-rc01 .
Version 2.0.1-rc01
3 آوریل 2019
WorkManager 2.0.1-rc01 is released. This version contains some bug fixes. For legacy 1.x users, some of these changes also appear in 1.0.1-rc01 .
رفع اشکال
- Robolectric tests now operate properly with WorkManager. b/122553577
- Fixed an edge case crash with constraints tracking not being cleaned up on pre-JobScheduler APIs. b/129226383
- Fixed a
StackOverflowErrordealing with long chains of work. b/129091233 - Updated documentation for
PeriodicWorkRequests to indicate that flex time is not supported on API 23. - Fixed some broken links in the Kotlin documentation.
نسخه 2.0.0
نسخه 2.0.0
20 مارس 2019
WorkManager 2.0.0 is released. This version is identical to 2.0.0-rc01 and is the AndroidX version of 1.0.0 stable with AndroidX dependencies. We recommend targeting this version instead of the legacy 1.x versions. All active development will target 2.x and 1.x will only receive critical bug fixes for a limited time.
Version 2.0.0-rc01
7 مارس 2019
WorkManager 2.0.0-rc01 is released. This version is identical to 1.0.0 stable but has AndroidX dependencies. Once this reaches 2.0.0 stable, you should include this version and the legacy 1.x versions will only receive some critical bug fixes. All active development will target 2.x.
Pre-AndroidX Dependencies
Reference docs: Java
شیار
dependencies { def work_version = "1.0.1" // (Java only) implementation "android.arch.work:work-runtime:$work_version" // Kotlin + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "android.arch.work:work-rxjava2:$work_version" // optional - Test helpers androidTestImplementation "android.arch.work:work-testing:$work_version" }
کاتلین
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
نسخه 1.0.1
نسخه 1.0.1
9 آوریل 2019
WorkManager 1.0.1 is released. This release is identical to 1.0.1-rc01 .
Please note that we strongly encourage users to update to WorkManager 2.x, as there will be very few updates to the 1.x branch moving forward. New APIs will also not be released for the 1.x library.
Version 1.0.1-rc01
2 آوریل 2019
WorkManager 1.0.1-rc01 is released. This version contains some bug fixes.
رفع اشکال
- Robolectric tests now operate properly with WorkManager. b/122553577
- Fixed an edge case crash with constraints tracking not being cleaned up on pre-JobScheduler APIs. b/129226383
- Fixed a
StackOverflowErrordealing with long chains of work. b/129091233
نسخه 1.0.0
نسخه 1.0.0
05 مارس 2019
This is WorkManager's 1.0.0 stable release. This version of WorkManager is identical to 1.0.0-rc02.
Version 1.0.0-rc02
21 فوریه 2019
This is the second release candidate for WorkManager's 1.0.0 stable release. This release contains two bug fixes.
رفع اشکال
Workers are now correctly scheduled after an application crash. b/124546316Workers that throw an uncheckedExceptionare now correctly marked asFAILEDand no longer crash the app process.
Version 1.0.0-rc01
14 فوریه 2019
This is a release candidate for WorkManager's 1.0.0 stable release. This release contains one bug fix.
رفع اشکال
- The AlarmManager based implementation now correctly respects
flexwindows for PeriodicWorkRequests. b/124274584
Version 1.0.0-beta05
6 فوریه 2019
This release contains some bug fixes.
رفع اشکال
- Fixed a case where
JobScheduler.getPendingJob(...)was used on API 23. b/123893059 - Fixed a
NullPointerExceptionon devices running Android 5.1 (API level 22) or lower. b/123835104
Version 1.0.0-beta04
4 فوریه 2019
This release contains some bug fixes.
رفع اشکال
- Improved scheduling of PeriodicWork for the AlarmManager based implementation.
- Fixed a case where WorkManager failed to correctly track constraints when using the AlarmManager based implementation. b/123379508
- Fixed a case when WorkManager failed to retry work on process death when using the AlarmManager based implementation. b/123329850
- Fixed a case which would cause WorkManager to leak Wakelocks when using the AlarmManager based implementation.
Version 1.0.0-beta03
25 ژانویه 2019
This release contains some bug fixes.
رفع اشکال
- We introduced a regression
1.0.0-beta02that was causing work to not execute properly in some situations. b/123211993 - Fixed a case where work wasn't properly honoring backoff timing. b/122881597
- Fixed a
ConcurrentModificationExceptionon devices running Android 5.1 (API or) or lower. This is a continuation of the fix in1.0.0-beta02. b/121345393 - Added
exported=falsefor some components in our manifest that were missing this annotation. - Included information about how WorkManager interacts with the OS in the package-level documentation.
Version 1.0.0-beta02
15 ژانویه 2019
This release contains some bug fixes.
رفع اشکال
- Fixed an edge case where periodic work could run more than once per interval on devices running Android 6.0 (API level 23). b/121998363
- Fixed a
ConcurrentModificationExceptionon devices running Android 5.1 (API level 22) or lower. b/121345393 - Fixed erroneous execution of work when Constraints aren't met on devices running Android 5.1 (API level 22) or lower. b/122578012
- Optimized work completion handling to be faster in some edge cases. b/122358129
- Added a change to address potential race conditions among multiple instances of
LiveDatathat WorkManager uses. - Moved to use
Roomdependency1.1.1instead of1.1.1-rc01; these versions are identical. b/122578011
Version 1.0.0-beta01
19 دسامبر 2018
This release contains no API changes; moving forward, WorkManager is expected to stay API stable until the next version unless there is a critical problem. This release contains some bug fixes.
رفع اشکال
- Previously-cancelled children of successfully completed parent work will no longer run. b/120811767
- Properly initialized logging classes (primarily surfaced during tests).
Version 1.0.0-alpha13
12 دسامبر 2018
This release contains a minor API change that will be helpful for some Kotlin users.
تغییرات API
-
androidx.work.Resulthas been moved to be an inner class ofListenableWorker. This prevents refactoring conflicts with Kotlin's top-levelResultclass. This is a breaking API change. b/120564418
Breaking API Changes
-
androidx.work.Resulthas been moved to be an inner class ofListenableWorker.
Version 1.0.0-alpha12
5 دسامبر 2018
This release contains some breaking API changes; please see the Breaking API Changes section below. This version is likely to be released as our first beta. alpha12 also contains extensive documentation updates.
تغییرات API
- A new artifact,
work-rxjava2, introducesRxWorker. This is aListenableWorkerthat expects aSingle<Payload>. - Support for Firebase JobDispatcher has been removed because of its impending deprecation. This means that the
work-firebaseartifact will no longer be updated as we head into beta. We will be looking into adding an alternative in the future. - Combined
PayloadintoResult.Resultis now a "sealed class" with three concrete implementations, which you can obtain viaResult.success()(orResult.success(Data)),Result.failure()(orResult.failure(Data)), andResult.retry(). YourListenableFutures now resultResultinstead ofPayload.Workers don't have getter and setter methods for outputData. This is a breaking change. - Added
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)andConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)and variants to better support slow triggering content URIs. b/119919774 - Added
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)variant. This method requires API 26. - Added
Operation.await()andListenableFuture.await()Kotlin extension methods. - Renamed
Operation.getException()toOperation.getThrowable(). This is a breaking change. - The
ContentUriTriggersclass and methods referencing it are no longer available for public usage. This is a breaking change. - Removed the rest of the varargs methods in
WorkManager,WorkContinuation, andOneTimeWorkRequestto streamline the API. To fix any build problems, you can wrap your existing varargs withArrays.asList(...). We still include single-argument versions of each method. This is a breaking change. - Removed
WorkContinuation.combine(OneTimeWorkRequest, *)variants. They were presenting a confusing API; the existingcombinemethods are more understandable. This is a breaking change.
رفع اشکال
- Pre-Marshmallow implementations are now more reliable in recovering from process death of an already-executing task.
-
LiveDatathat is observed viaobserveForeveris tracked via WorkManager. This is a backport of a Room library fix. b/74477406 -
Data.Builder.build()now throws an exception if the serialized object exceeds its maximum size. This previously would only happen on a background thread where you couldn't properly handle it. - Further distinguished stopped vs. cancelled work;
getWorkInfoById()will return aWorkInfowith theCANCELLEDStateduringListenableWorker.onStopped(). - Treat
nullResults as failures inListenableWorker. b/120362353 - Speculative fix for Shield Tablets running API 24 that sometimes threw an
IllegalArgumentException. b/119484416
Breaking API Changes
- Support for Firebase JobDispatcher has been removed because of its impending deprecation. This means that the
work-firebaseartifact will no longer be updated as we head into beta. We will be looking into adding an alternative in the future. - Combined
PayloadintoResult.Resultis now a "sealed class" with three concrete implementations, which you can obtain viaResult.success()(orResult.success(Data)),Result.failure()(orResult.failure(Data)), andResult.retry(). YourListenableFutures now resultResultinstead ofPayload.Workers don't have getter and setter methods for outputData. - Added
Operation.await()andListenableFuture.await()Kotlin extension methods. - Renamed
Operation.getException()toOperation.getThrowable(). - The
ContentUriTriggersclass and methods referencing it are no longer available for public usage. - Removed the rest of the varargs methods in
WorkManager,WorkContinuation, andOneTimeWorkRequestto streamline the API. To fix any build problems, you can wrap your existing varargs withArrays.asList(...). We still include single-argument versions of each method. - Removed
WorkContinuation.combine(OneTimeWorkRequest, *)variants. They were presenting a confusing API; the existingcombinemethods are more understandable.
Version 1.0.0-alpha11
8 نوامبر 2018
This release contains many changes that will become stable API at beta . There are breaking API changes in this release; please see the Breaking API Changes section below.
تغییرات API
-
work-runtime-ktxintroduces a newCoroutineWorker. -
WorkStatushas been renamed toWorkInfo. All correspondinggetStatusmethod variants have been renamed to the correspondinggetWorkInfovariants. This is a breaking change. -
ListenableWorker.onStopped()no longer accepts has a boolean argument representing if theWorkRequestwas cancelled.WorkManagerno longer makes this distinction. This is a breaking change. -
androidx.work.testpackage has been renamed toandroidx.work.testingpackage. This is a breaking change. - Setters on
Constraintsare no longer a part of the public API. This is a breaking change. -
WorkerParameters.getTriggeredContentUris()andWorkerParameters.getTriggeredContentAuthorities()previously returned arrays. Now these methods return Collections. This is a breaking change. -
ListenableWorker.onStartWork()is renamed toListenableWorker.startWork(). This is a breaking change. - The constructor for
WorkStatusis no longer a part of the public API. This is a breaking change. -
Configuration.getMaxJobSchedulerID()andConfiguration.getMinJobSchedulerID()are renamed toConfiguration.getMinJobSchedulerId()andConfiguration.getMaxJobSchedulerId()respectively. This is a breaking change. - Added a lot of
@NonNullannotations to the public API to improve ergonomics of the API. - Add
WorkManager.enqueueUniqueWork()API to enqueue uniqueOneTimeWorkRequests without having to create aWorkContinuation. - All variants of
enqueueandcancelmethods onWorkManagernow return a newOperationtype. This is a breaking change. - All variants of
enqueueno longer accept varargs forWorkRequests. This is a breaking change. Use Collections instead. You can useArrays.asList()to modify existing code. We did this to reduce the API surface and method count. - Attempting to
initializeWorkManagermore than once per process will now result in anIllegalStateException. This is a breaking change.
رفع اشکال
-
WorkRequest.Builders in thework-runtime-ktxartifact now useListenableWorkers. Fixes b/117666259 - Ensure the next run time for
PeriodicWorkis in the future. Fixes b/118204399 - Remove potential disk I/O when using WorkManager on app startup. Fixes b/117796731
- Fix a race condition in
WorkConstraintsTracker. Fixes android-workmanager/issues/56
Breaking API Changes
-
WorkStatushas been renamed toWorkInfo. All correspondinggetStatusmethod variants have been renamed to the correspondinggetWorkInfovariants. -
ListenableWorker.onStopped()no longer accepts has a boolean argument representing if theWorkRequestwas cancelled.WorkManagerno longer makes this distinction. -
androidx.work.testpackage has been renamed toandroidx.work.testingpackage. - Setters on
Constraintsare no longer a part of the public API. -
WorkerParameters.getTriggeredContentUris()andWorkerParameters.getTriggeredContentAuthorities()previously returned arrays. Now these methods return Collections. -
ListenableWorker.onStartWork()is renamed toListenableWorker.startWork(). - The constructor for
WorkStatusis no longer a part of the public API. -
Configuration.getMaxJobSchedulerID()andConfiguration.getMinJobSchedulerID()are renamed toConfiguration.getMinJobSchedulerId()andConfiguration.getMaxJobSchedulerId()respectively. - All variants of
enqueueandcancelmethods onWorkManagernow return a newOperationtype. - All variants of
enqueueno longer accept varargs forWorkRequests. - Attempting to
initializeWorkManagermore than once per process will now result in anIllegalStateException.
Version 1.0.0-alpha10
11 اکتبر 2018
This release supports developer-controlled asynchronous work. There are breaking API changes in this release; please see the Breaking API Changes section below.
We anticipate that WorkManager is entering the final phases of its alpha period. We expect to be API stable in beta, so please take some time to file your feedback on our issue tracker.
تغییرات API
- Removed all previously
deprecatedmethods and classes, notably the defaultWorkerconstructor. This is a breaking API change. - Renamed
NonBlockingWorkertoListenableWorker, which is now an unhidden public class and ready for usage.-
ListenableWorkerprovides access to one abstract method,ListenableFuture<Payload> onStartWork()which is called on the main thread. It is up to you to start and process work asynchronously. When finished, you should update theListenableFutureappropriately. Reference implementations ofListenableFutures are provided in theFuturespackage inalpha02(see below theWorkManagersection). -
WorkerextendsListenableWorkerand still operates as before, with an abstractResult doWork()method. - Shuffled some methods and members from
WorkertoListenableWorker. - We shall soon provide reference implementations for
ListenableWorkers that use Kotlin coroutines (once the stable versions are released) and RxJava2.
-
- The interface
WorkerFactoryand the concrete implementationDefaultWorkerFactoryhave been merged into an abstract class calledWorkerFactory. The implementation ensures that the default reflection-based behavior is called as a last-ditch effort for any user-createdWorkerFactoryinstances. This is a breaking change. - Removed
WorkManager.synchronous()andWorkContinuation.synchronous()and all related methods. AddedListenableFuture<Void>as the return type of many methods in the API. This is a breaking API change.- You can now synchronously get and observe by using
ListenableFutures. For example,WorkManager.enqueue()used to returnvoid; it now returns aListenableFuture<Void>. You can callListenableFuture.addListener(Runnable, Executor)orListenableFuture.get()to run code once the operation is complete. - Note that these
ListenableFutures do not tell you if the operation succeeded or failed; only that they finished. You will still need to chain WorkManager methods to find out this information. - We ignore
cancel()calls on these objects, as they are confusing and hard to reason about (are you cancelling the operation or the resulting work?). This is within theFutures contract. - To maintain parity with the synchronous
getStatus*methods, we have providedListenableFuturevariants, and renamed the existing ones that returnedLiveDatato explicitly have "LiveData" as part of the name (for example,getStatusesByIdLiveData(UUID)). This is a breaking API change.
- You can now synchronously get and observe by using
رفع اشکال
- Fixed the known issue from alpha09 regarding duplicate
androidx-annotations.profiles. You may remove the workaround from the previous release notes by deletingexclude 'META-INF/proguard/androidx-annotations.pro'from your gradle file. - Added proguard configurations to keep new
Workerconstructor. b/116296569 - Fix potential
NullPointerExceptionin a race condition where work wasREPLACEd. b/116253486 and b/116677275 -
WorkContinuation.combine()now accepts one or moreWorkContinuations instead of two or more. b/117266752
Breaking API Changes
- Removed all previously
deprecatedmethods and classes, notably the defaultWorkerconstructor. - The interface
WorkerFactoryand the concrete implementationDefaultWorkerFactoryhave been merged into an abstract class calledWorkerFactory. - Removed
WorkManager.synchronous()andWorkContinuation.synchronous(). -
WorkManager.getStatus*()methods now returnListenableFutures.WorkManager.getStatus*LiveData()returnLiveDatas.
Version 1.0.0-alpha09
19 سپتامبر 2018
موضوع شناخته شده
If you run into the following issue: "More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'", please put the following in your gradle file as a temporary workaround while we fix the issue in alpha10:
شیار
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
کاتلین
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
رفع اشکال
- Added another fix that was needed for the "100 jobs" error. b/115560696
- Added some fixes for foreign key constraint errors due to race conditions. b/114705286
- Delegated
ConstraintTrackingWorker.onStopped(boolean)calls to the underlyingWorker. b/114125093 - Enforce correct minimum backoff delay for Firebase JobDispatcher. b/113304626
- Improved threading guarantees internal to the library.
- Correct potential issue with deduping of
LiveDatainternally.
تغییرات API
- You can now create your own
Workerinstances at runtime by specifying aWorkerFactoryas part of theWorkManager.Configuration. The fallback factory isDefaultWorkerFactory, which matches behavior of previous versions of WorkManager.- The default constructors for
WorkerandNonBlockingWorkerare now marked as deprecated. Please use the new constructor (Worker(Context, WorkerParameters)) and callsuper(Context, WorkerParameters); future versions of WorkManager will remove the default constructor.
- The default constructors for
- We have started using the new
ListenableFutureartifact internally (free of Guava dependencies). We will introduce ListenableFutures to the API in upcoming releases. This change will support the eventual unhiding ofNonBlockingWorker. - Add ability to trigger timed work in
TestDriverviaTestDriver.setInitialDelayMet(UUID)andTestDriver.setPeriodDelayMet(UUID). b/113360060
شکستن تغییرات
- The default
WorkerandNonBlockingWorkerconstructors are deprecated. Please migrate to the new constructor ASAP. Future versions will remove the default constructor.
Version 1.0.0-alpha08
27 آگوست 2018
رفع اشکال
- Explicitly labelled WorkManager components as direct boot unaware so they don't fire up during direct boot. In the future, we will provide a version of WorkManager that is direct boot-aware. b/112665532
- Fixed an issue where retried work was not running. b/112604021
- Fixed periodic work not executing repeatedly (related to the above issue). b/112859683
- Honored backoff policies when the app process is already running.
- Corrected exception messages in
Datato indicate the limit is 10KB. - Lowered maximum value of
Configuration.setMaxSchedulerLimit(int)to 50 to account for some latency inJobSchedulerprocessing completion. b/112817355
Version 1.0.0-alpha07
16 آگوست 2018
رفع اشکال
- Fixed a potential SQL query with negative limits that could return an unbounded number of results.
- Work that has finished execution now correctly cancels all pending copies of that work in other Schedulers. This led to exceeding the
JobSchedulerjobs limit. b/111569265 - Fixed a
ConcurrentModificationExceptioninConstraintTracker. b/112272753 - Changed return type annotations of
Data.getBooleanArray(String)andData.getIntArray(String)to@Nullableinstead of@NonNull. b/112275229
تغییرات API
-
Workernow extends a new class,NonBlockingWorker. This does not affect any current usage. In the future,NonBlockingWorkerwill become a fully supported entity for custom threading solutions. - Changed return type annotations of
Data.getBooleanArray(String)andData.getIntArray(String)to@Nullableinstead of@NonNull. b/112275229 - Kotlin extensions: deprecated
Map.toWorkData()and added a top-levelworkDataOf(vararg Pair<String, Any?>)to be more consistent with existing APIs.
Version 1.0.0-alpha06
1 آگوست 2018
رفع اشکال
- Prevent a database lock when scheduling work. b/111801342
- Fix a bug which causes
PeriodicWorkto not run on schedule when in Doze mode. b/111469837 - Fix a race condition when tracking constraints which causes
WorkManagerto crash. googlecodelabs/android-workmanager/issues/56 - Create unique
WorkRequests when usingWorkRequest.Builder#build(). b/111408337 - Enable the use of
RescheduleReceiveronly when there areWorkRequests that need it. b/111765853
Version 1.0.0-alpha05
24 جولای 2018
تغییرات API
-
WorkManager.getInstance()is now annotated with@NonNullinstead of@Nullable. Instead, if the singleton isn't properly initialized in cases of manual initialization, the method will throw anIllegalStateException. This is a breaking API change. - Added a new API,
Configuration.Builder.setMinimumLoggingLevel(int), which can control WorkManager verbosity. By default, WorkManager logsLog.INFOand above. - Changed signature of
Data.getString()so it no longer takes a default value (it is implicitlynull). This is a breaking API change. - Marked some methods needed only for internal usage as
@hide. This includes theConstraintsconstructor,Data.toByteArray(), andData.fromByteArray(byte[]). This is a breaking API change.
رفع اشکال
- WorkManager no longer executes work during known cases of auto-backup. This could have resulted in a crash. b/110564377
- Fixed double-scheduling of
PeriodicWorkRequests when usingJobScheduler. b/110798652 - Fixed an issue with
PeriodicWorkRequests not executing correctly after device doze. b/111469837 - Fixed an issue with initial delays when using Firebase JobDispatcher. b/111141023
- Fixed some potential race conditions and timing issues.
- Correctly freed up
BroadcastReceivers that were no longer needed. - Optimized rescheduling performance when apps restart after being force closed.
- Allowed
TestScheduler.setAllConstraintsMet(UUID)to be called before or after enqueuing the givenWorkRequest. b/111238024
شکستن تغییرات
-
WorkManager.getInstance()is now annotated with@NonNullinstead of@Nullable. - Changed signature of
Data.getString()so it no longer takes a default value (it is implicitlynull). - Marked some methods needed only for internal usage as
@hide. This includes theConstraintsconstructor,Data.toByteArray(), andData.fromByteArray(byte[]).
Version 1.0.0-alpha04
26 ژوئن 2018
رفع اشکال
-
PeriodicWorkRequests are now correctly rescheduled when using theAlarmManagerbased implementation. - Fixed a potential ANR when rescheduling all workers after a force stop or a reboot. b/110507716
- Added nullability annotations to various WorkManager APIs. b/110344065
- Log uncaught exceptions that occur during Worker execution. b/109900862
- Allowed destructive database migrations in case you decide to roll back to an older version of WorkManager. b/74633270
- Fixed a migration crash if creating duplicate implicit tags. This is a very rare issue that occurred only if you used the same implicit tag format yourself.
Version 1.0.0-alpha03
19 ژوئن 2018
رفع اشکال
Fixed a race condition in the
AlarmManagerbased implementation. b/80346526 .Fixed duplicate jobs when using
JobSchedulerafter a device reboot.Jobs with Content URI triggers now persist across reboots. b/80234744
Documentation updates. b/109827628 , b/109758949 , b/80230748
Fixed a crash when re-enqueuing a
WorkRequest. b/109572353 .Fixed Kotlin compiler warnings when using the
work-runtime-ktxdependency.WorkManager now uses
Roomversion1.1.1-rc1.
تغییرات API
- Added
getStatusesSync(), the synchronous version ofWorkContinuation.getStatuses(). -
Workerhas the ability to distinguish between user-initiated cancellation and temporary os-requested stopping.Worker.isStopped()returnstrueif any kind of stop has been requested.Worker.isCancelled()returnstruewhen the work has been explicitly cancelled. b/79632247 - Add support for JobParameters#getNetwork() on API 28. This is exposed via
Worker.getNetwork(). - Added
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)so you can enforce how many jobs can be sent toJobSchedulerorAlarmManager. This helps preventWorkManagerfrom taking all your availableJobSchedulerslots. - Added
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)which helps define a range ofJobSchedulerjob ids safe forWorkManagerto use. b/79996760 -
Worker.getRunAttemptCount()returns the current run count for a givenWorker. b/79716516 -
WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)allows you to enqueue a uniquePeriodicWorkRequests. b/79600647 -
WorkManager.cancelAllWork()cancels allWorkers. Libraries that depend onWorkManagercan query when this method was called last by usingWorkManager.getLastCancelAllTimeMillis()for additional cleanup of internal state. - Added
WorkManager.pruneWork()to remove completed jobs from the internal database. b/79950952 , b/109710758
تغییرات رفتار
- Added an implicit tag for all
WorkRequests, which is the fully qualified class name for theWorker. This allows the ability to removeWorkRequests withouttags or when theidis not available. b/109572351
شکستن تغییرات
- Renamed
Worker.WorkerResulttoWorker.Result. -
Worker.onStoppednow has an additionalisCancelledparameter which is set totruewhen theWorkerhas explicitly been cancelled.
Version 1.0.0-alpha02
24 مه 2018
رفع اشکال
- Fixed a
NullPointerExceptiononState.isFinished(). b/79550068 - Fixed an issue which caused
Workers to be rescheduled onApplication.onCreate(). b/79660657 - Fixed an issue where you could schedule more work than is allowed by the OS. b/79497378
- Moved cleanup of wake locks associated with
Workers to the background thread. - The
AlarmManagerimplementation now correctly cleans up when all pending work is complete. - Fixed cleanup SQL queries which affected non-English locales. b/80065360
- Added support for
floats inData. b/79443878 -
Data.Builder.putAll()now returns an instance of theBuilder. b/79699162 - More javadoc and fixes in documentation. b/79691663
تغییرات API
-
Workers can react to being stopped.Worker.isStopped()can be used to check if aWorkerhas been stopped.Worker.onStopped()can be used to perform lightweight cleanup operations. -
Worker.getTags()API returns aSetof tags associated with theWorker. - Added
javax.time.Durationoverloads for APIs which take a combination of duration andTimeUnits. This is guarded by@RequiresApi(26). -
WorkManagerextensions have moved from theandroidx.work.ktxpackage to theandroidx.workpackage. The old extensions are deprecated and will be removed in a future version. -
Configuration.withExecutor()is deprecated. UseConfiguration.setExecutor()instead.
Version 1.0.0-alpha01
8 مه 2018
WorkManager simplifies scheduling and execution of guaranteed, constraint-aware background work. This initial release is 1.0.0-alpha01 .