آخرین به روز رسانی | انتشار پایدار | کاندید را آزاد کنید | نسخه بتا | انتشار آلفا |
---|---|---|---|---|
2 اکتبر 2024 | 2.9.1 | - | 2.10.0-بتا01 | - |
برای افزودن وابستگی به WorkManager، باید مخزن Google Maven را به پروژه خود اضافه کنید:
وابستگیهای مصنوعات مورد نیاز خود را در فایل build.gradle
برای برنامه یا ماژول خود اضافه کنید:
dependencies { def work_version = "2.9.1" // (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.9.1" // (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 اکتبر 2024
androidx.work:work-*:2.10.0-beta01
منتشر شد. نسخه 2.10.0-beta01 حاوی این تعهدات است.
18 سپتامبر 2024
androidx.work:work-*:2.10.0-alpha04
منتشر شد. نسخه 2.10.0-alpha04 حاوی این commit ها است.
تغییرات API
- دلیل توقف
STOP_REASON_FOREGROUND_SERVICE_TIMEOUT
را برای زمانی که یک کارگر پیشزمینه به دلیل وقفه زمانی اجرا متوقف میشود، بر اساس نوع سرویس پیشزمینه اضافه کنید. ( Ibd0af )
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 کامپایل شده است.
- زمانی که
WorkManager
stopSelf()
را فراخوانی نمیکند، کارگران پیشزمینه از نوع «سرویس کوتاه» و «همگامسازی داده» به پایان میرسند و باعث ایجاد 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 )
17 آوریل 2024
androidx.work:work-*:2.10.0-alpha02
منتشر شد. نسخه 2.10.0-alpha02 حاوی این commit ها است.
تغییرات API
- قابلیت انتشار بازه های ردیابی از طریق یک
@RestrictTo
Tracer
قابل تنظیم در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 )
24 ژانویه 2024
androidx.work:work-*:2.10.0-alpha01
منتشر شد. نسخه 2.10.0-alpha01 حاوی این commit ها است.
ویژگی های جدید
- توسعه دهندگان می توانند
NetworkRequest
به عنوان یک محدودیت برای یک کارگر از طریق روشConstraints.setRequiredNetworkRequest
تعیین کنند. این امکان کنترل دقیق تری بر روی شبکه ای که این کارگر باید اجرا کند را فراهم می کند.
تغییرات API
- افزودن قابلیتی برای تعیین
NetworkRequest
به عنوان محدودیت. ( Id98a1 , b/280634452 )
7 آگوست 2024
androidx.work:work-*:2.9.1
منتشر شد. نسخه 2.9.1 شامل این commit ها است.
رفع اشکال
- خرابی ناشی از تلاش
WorkManager
برای راهاندازی مجدد یک کارگر طولانیمدت (یعنی کارگر پیشزمینه) را برطرف کنید، زمانی که نوع پیشزمینه کار دارای مجوزهای پیشنیاز Android 14 بود که لغو شده بودند. ( b/333957914 )
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 )
18 اکتبر 2023
androidx.work:work-*:2.9.0-rc01
منتشر شد. نسخه 2.9.0-rc01 حاوی این commit ها است.
- هیچ تغییری از آخرین نسخه بتا وجود ندارد
6 سپتامبر 2023
androidx.work:work-*:2.9.0-beta01
منتشر شد. نسخه 2.9.0-beta01 حاوی این تعهدات است.
تغییرات API
- ثابت اضافه شده به دلایل توقف که توسط
WorkInfo.stopReason
وListenableWorker.stopReason
( I0cc00 ) برگردانده شده است
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 )
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 )
22 مارس 2023
androidx.work:work-*:2.8.1
منتشر شد. نسخه 2.8.1 حاوی این commit ها است.
رفع اشکال
- ANR در
RescheduleReceiver
که قبلاً دو پخش همزمان را به درستی مدیریت نمی کرد، رفع شد. ( b/236906724 )
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
منتشر کنید.
7 دسامبر 2022
androidx.work:work-*:2.8.0-rc01
منتشر شد. نسخه 2.8.0-rc01 حاوی این commit ها است.
ویژگی های جدید
- هیچ ویژگی جدیدی در این نسخه وجود ندارد. این عمدتا یک دست انداز نسخه است
9 نوامبر 2022
androidx.work:work-*:2.8.0-beta02
منتشر شد. نسخه 2.8.0-beta02 حاوی این تعهدات است.
رفع اشکال
- روش
equals
ثابت درWorkInfo
، که قبلاً اطلاعات نسل جدید را در نظر نمی گرفت. ( 4977cc )
5 اکتبر 2022
androidx.work:work-*:2.8.0-beta01
منتشر شد. نسخه 2.8.0-beta01 حاوی این تعهدات است.
رفع اشکال
- مشکلی در زمانبندی حریص که مانع از دویدن کارگران در هنگام بارگیری میشد، برطرف شد. ( I9686b , b/248111307 )
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 )
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 )
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 )
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 اکنون
getForegroundInfo
Single
دارد که می تواند به جایgetForegroundInfoAsync
استفاده شود کهListenableFuture
برمی گرداند. ( I21c91 , b/203851459 ) - RxWorker برای RxJava 3 اکنون
getForegroundInfo
Single
دارد که می تواند به جایgetForegroundInfoAsync
کهListenableFuture
برمی گرداند استفاده شود. ( I1ca8a ) - RxWorker اکنون
setForeground
بازگشتیCompletable
دارد که می تواند به جایsetForegroundInfoAsync
کهListenableFuture
برمی گرداند استفاده شود. ( I992a3 , b/203851459 )
رفع اشکال
- هنگام استفاده از
suspendCancellableCoroutine
لغوها را درCoroutineScope
بهListenableFuture
منتشر کنید. ( I77e63 )
17 نوامبر 2021
androidx.work:work-*:2.7.1
منتشر شد. نسخه 2.7.1 حاوی این commit ها است.
رفع اشکال
- هنگام استفاده از
suspendCancellableCoroutine
لغوها درCoroutineScope
بهListenableFuture
منتشر می شوند. ( I77e63 ) - زمانی که درخواستهای کاری با تأخیر بهعنوان تسریعشده علامتگذاری میشوند، فوراً استثنا ایجاد میشود. bef1762
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 واگذار می کند، در حالی که با واگذاری به یک سرویس پیش زمینه، سازگاری با نسخه های قبلی اندروید را فراهم می کند.
29 سپتامبر 2021
androidx.work:work-*:2.7.0-rc01
منتشر شد. نسخه 2.7.0-rc01 حاوی این commit ها است.
این نسخه مشابه androidx.work:work-*: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 )
21 جولای 2021
androidx.work:work-*:2.7.0-alpha05
منتشر شد. نسخه 2.7.0-alpha05 حاوی این commit ها است.
این نسخه همچنین حاوی رفع اشکال از نسخه WorkManager 2.6.0-beta02
است.
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 را پرتاب میکند.
رفع اشکال
- وقتی کارهای تسریع شده دوباره برنامه ریزی می شوند، دیگر تسریع نمی شوند. تبدیل به مشاغل معمولی می شوند.
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 )
10 مارس 2021
androidx.work:work-*:2.7.0-alpha02
منتشر شد. نسخه 2.7.0-alpha02 حاوی این commit ها است.
رفع اشکال
- تغییرپذیری
PendingIntent
آشکار کنید تا هنگام هدف قرار دادن Android 12 خرابی را برطرف کنید. ( b/180884673 )
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
های سریع.
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 )
4 آگوست 2021
androidx.work:work-*:2.6.0-rc01
منتشر شد. نسخه 2.6.0-rc01 حاوی این commit ها است.
این نسخه مشابه androidx.work:work-*: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 ژوئن 2021
androidx.work:work-*:2.6.0-beta01
منتشر شد. نسخه 2.6.0-beta01 حاوی این تعهدات است.
این نسخه حاوی برخی بهبودهای جزئی در اسناد است. نسخه تا حد زیادی مشابه 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 )
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()
اضافه کنید کهoutputData
ListenableWorker را برمیگرداند. ( Ie51e3 )
رفع اشکال
- یک راه حل برای یک اشکال OEM اضافه کنید که باعث می شود هنگام استفاده از
AlarmManager
API یکSecurityException
ایجاد شود. ( aosp/1587518 )
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 ) -
TestListenableWorkerBuilder
اکنون از کلاس reified پشتیبانی می کند کهListenableWorker
برای آسان تر کردن آزمایش گسترش می دهد. ( aosp/1443299 , b/169787349 ) - بازرس WorkManager اکنون هنگام استفاده از Android Studio Arctic Fox در دسترس است.
13 ژانویه 2021
androidx.work:work-*:2.5.0-rc01
منتشر شد. نسخه 2.5.0-rc01 حاوی این commit ها است.
رفع اشکال
- اشکالی که در آن
getWorkInfosLiveData
پس از بهروزرسانی موجودیتها هنگام استفاده از API مبتنی برWorkQuery
به درستی باطل نمیشد، برطرف شد. ( aosp/1540566 , b/173769028 ) - رفع اشکالی که در آن تراکنش های پایگاه داده در برخی موارد نادر به عنوان موفقیت آمیز علامت گذاری نمی شدند. این باعث بروز مشکلاتی در برخی از دستگاه های موتورولا می شود. ( aosp/1535368 , b/175944460 )
- رفع یک اشکال برای نادیده گرفتن
NoSuchElementException
در هنگام تلاش برای جداسازی از یک فرآیند مرده. ( aosp/1530589 ) -
ConstraintTrackingWorker
بهبود دهید تا فقط در صورتی کهListenableWorker
متوقف نشده باشد، متوقف شود. ( aosp/1496844 , b/172946965 ) - کتابخانه های androidx.work را برای هدف قرار دادن جاوا 8 ( Ibd2f2 ) به روز کنید
2 دسامبر 2020
androidx.work:work-*:2.5.0-beta02
منتشر شد. نسخه 2.5.0-beta02 حاوی این تعهدات است.
رفع اشکال
- یک اشکال در
androidx.work:work-multiprocess
که در آن WorkManager هنگام تلاش برای اتصال به فرآیند تعیینشده، بهطور ناخواسته رشته تماس را مسدود کرد، رفع شد. ( aosp/1475538 ) - رفع اشکالی که در آن
PeriodicWorkRequest
به درستی تطبیق نمی شد. ( b/172475041 , aosp/1489577 ) - در هنگام توقف سرویس پیشزمینه هنگام استفاده از
setForeground*
، راهحلی برای اشکال پلتفرم اضافه شد. ( b/170924044 , aosp/1489901 )
28 اکتبر 2020
androidx.work:work-*:2.5.0-beta01
منتشر شد. نسخه 2.5.0-beta01 حاوی این تعهدات است.
ویژگی های جدید
-
WorkManager
بهطور خودکار تعدادWorkRequest
هایی را که میتوانند توسط زمانبندی در فرآیند دریافت شوند، کاهش میدهد. درخواست ها همچنان به ترتیب FIFO اجرا می شوند. ( aosp/1455228 ) -
WorkManager
زمانی که دیتا استور برنامه در وضعیت بدی قرار دارد، تلاش میکند تا بازیابی کند. ( aosp/1463103 )
رفع اشکال
- وقتی
ListenableWorker
ها قطع می شوند، فوراً آنها راENQUEUED
علامت گذاری کنید تا متعاقباً برنامه ریزی مجدد شوند. ( aosp/1455618 , b/170273988 )
14 اکتبر 2020
androidx.work:work-*:2.5.0-alpha03
منتشر شد. نسخه 2.5.0-alpha03 حاوی این commit ها است.
تغییرات API
-
TestListenableWorkerBuilder
وTestWorkerBuilder
از انواع خام استفاده نمی کنند. ( I883ad , b/169787349 )
رفع اشکال
- از
ApplicationInfo
برای تعیین نام فرآیند پیش فرض برنامه استفاده کنید. ( b/168716641 , aosp/1429950 ) - قوانین نمایان بودن
RemoteWorkManager
وRemoteWorkContinuation
را اصلاح کنید. این APIها دیگر به عنوان@Restricted
علامتگذاری نمیشوند. ( aosp/1432091 ) - قوانین proguard را برای
:work:work-multiprocess
اصلاح کنید. ( aosp/1432091 ) - چرخههای عمر اعلانها را برای کارهای طولانیمدت مرتبط با سرویس پیشزمینه بهبود دهید. ( b/168502234 , aosp/1431331 )
16 سپتامبر 2020
androidx.work:work-*:2.5.0-alpha02
منتشر شد. نسخه 2.5.0-alpha02 حاوی این commit ها است.
ویژگی های جدید
- یک API به WorkQuery اضافه کنید تا بتوانید
id
برای پرس و جو ازWorkInfo
استفاده کنید. ( aosp/1412372 , b/157335295 ) - WorkManager از برنامههایی که از چندین فرآیند با یک مصنوع جدید استفاده میکنند (
androidx.work:work-multiprocess:*
) بهتر پشتیبانی میکند. این مصنوع جدید به حل چند مشکلی که اپلیکیشنهای بزرگ با آنها مواجه میشوند کمک میکند، از جمله:- WorkManager معمولاً در هر فرآیند برنامه باید مقداردهی اولیه شود. این عالی نیست زیرا اختلاف SQLite افزایش یافته است که به نوبه خود باعث مشکلات دیگری می شود. WorkManager اکنون API های جدیدی دارد که می تواند برای تعیین یک فرآیند برنامه اولیه با استفاده از
Configuration#setDefaultProcessName(processName)
استفاده شود.processName
یک نام فرآیند کاملاً واجد شرایط است که شبیهpackageName:processName
است (مثلاًcom.example:remote
). - مجموعه ای از API های جدید:
RemoteWorkManager
وRemoteWorkContinuation
برایenqueue
،cancel
وquery
درخواست های کاری. این APIها شامل انواعLiveData
برای جلوگیری از مشاجره SQLite در چندین فرآیند نیستند . همه تماسها برایenqueue
،cancel
وquery
با استفاده از AIDL به یک فرآیند برنامهprimary
هدایت میشوند و یکListenableFuture
روان برمیگردانند. ( aosp/1392657 , aosp/1411210 , aosp/1412215 , aosp/1417713 )
- WorkManager معمولاً در هر فرآیند برنامه باید مقداردهی اولیه شود. این عالی نیست زیرا اختلاف SQLite افزایش یافته است که به نوبه خود باعث مشکلات دیگری می شود. WorkManager اکنون API های جدیدی دارد که می تواند برای تعیین یک فرآیند برنامه اولیه با استفاده از
تغییرات API
- WorkManager اکنون
WorkRequest
های تکمیل شده را که وابستگی ناقصی ندارند را با شدت بیشتری هرس می کند. مدت زمان بافر از7
روز به1
روز تغییر کرد. ( aosp/1419708 )
رفع اشکال
- WorkManager اکنون مشاغل را به صورت پیشگیرانه آشتی می دهد ، بنابراین مشاغل
WorkRequest
S وJobScheduler
در هنگام شروع کارWorkManager
در همگام سازی هستند. ( AOSP/1412794 ، b/166292069 )
19 آگوست 2020
androidx.work:work-*:2.5.0-alpha01
*:2.5.0-alpha01 منتشر شده است. نسخه 2.5.0-alpha01 شامل این تعهدات است.
ویژگی های جدید
- تغییراتی در API های داخلی که به ما امکان می دهد ابزار بهتری را برای پیشبرد
WorkManager
فراهم کنیم. برای به روزرسانی های اضافی با ما در ارتباط باشید.
رفع اشکال
-
SecurityException
را هنگام ردیابی حالت شبکه در برخی از دستگاه ها انجام دهید. ( AOSP/1396969 )
مشارکت خارجی
- مستندات را برای
ArrayCreatingInputMerger
توسط Zac Sweers ( Github/43 ) اصلاح کنید.
22 جولای 2020
androidx.work:work-*:2.4.0
:2.4.0 منتشر شده است. نسخه 2.4.0 شامل این تعهدات است.
تغییرات اساسی از 2.3.0
- برنامه ریزی در فرآیند
WorkManager
اکنون توانایی بیشتری دارد. پیش از این ،Scheduler
فرآیند فقط در نظر می گرفت که کارهایی را که به تأخیر افتاده است و محدودیت های آنها برآورده شده است ، در نظر می گرفت. در حال حاضر ، برنامه ریز در حال پردازشWorkRequest
را دنبال می کند که ممکن است در آینده اجرا شود ، از جمله دوره های دوره ای.Scheduler
فرآیند همچنین محدودیت های برنامه ریزی را رعایت نمی کند (اما هنوز هم به اندازهExecutor
که توسط کارگر استفاده می شود محدود است). این بدان معناست که برنامه اکنون می تواند کارهای بیشتری را انجام دهد که برنامه در پیش زمینه باشد. برای مدیریت اجرای کار تأخیر در پیش زمینه ،WorkManager
همچنین یکRunnableScheduler
قابل تنظیم جدید را معرفی می کند. ( AOSP/1185778 ) - WorkManager اکنون از Rxjava 3 پشتیبانی می کند. برای استفاده از RXJAVA 3 ، باید وابستگی زیر را درج کنید:
implementation "androidx.work:work-rxjava3:2.4.0"
. ( AOSP/1277904 ) - با استفاده از یک
WorkQuery
توانایی پرس و جو برایWorkInfo
را اضافه کرد. این زمانی مفید است که توسعه دهندگان می خواهند با ترکیبی از ویژگی های مختلف ،WorkInfo
پرس و جو کنند. برای کسب اطلاعات بیشتر بهWorkQuery.Builder.fromStates(...)
،WorkQuery.Builder. fromTags(...)
یاWorkQuery.Builder.fromUniqueWorkNames(...)
. ( AOSP/1253230 ، B/143847546 ) امکان درخواست اطلاعات تشخیصی از
WorkManager
را با استفاده از:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
این اطلاعات مفید زیادی از جمله:
- کارهای کاری که در 24 ساعت گذشته به پایان رسید.
- کارهای کاری که در حال حاضر در حال اجرا هستند.
- برنامه ریزی شده کار. ( AOSP/1235501 )
اضافه کردن
ExistingWorkPolicy.APPEND_OR_REPLACE
که شبیه بهAPPEND
است ، اما زنجیره ای را که پیش نیازهای لغو یا شکست خورده است جایگزین می کند. ( b/134613984 ، AOSP/1199640 )امکان اضافه کردن یک
RunnableScheduler
سفارشی را برای ردیابی کارهای کاری که باید در آینده اجرا شوند ، فراهم کنید. این توسط برنامه ریز در فرآیند استفاده می شود. ( AOSP/1203944 )هنگام استفاده از یک
DelegatingWorkerFactory
، پشتیبانی از کارخانه های پویا را برای تفسیر اضافه کنید. ( b/156289105 ، AOSP/1309745 )ردیابی را برای محدودیت های
BATTERY_NOT_LOW
از نزدیک با سیستم عامل تراز کنید. ( AOSP/1312583 )برنامه ریز در حال فرآیند اکنون از API های بهتری برای تعیین نام فرآیند استفاده می کند. این برای پشتیبانی بهتر برنامه هایی که از چندین فرآیند استفاده می کنند مفید است. ( AOSP/1324732 )
قوانین جدید خط که اجرا می شود:
- استفاده از
foregroundServiceType
مناسب برای استفاده از API هایsetForegroundAsync()
. ( b/147873061 ، AOSP/1215915 ) - مشخص کردن شناسه های JobScheduler که WorkManager باید هنگام استفاده مستقیم از API های JobService از آن استفاده کند. AOSP/1223567
- یک قانون جدید را اضافه کرد که تضمین می کند که پیاده سازی های
ListenableWorker
هنگام استفاده ازWorkerFactory
پیش فرض اکنونpublic
هستند. ( AOSP/1291262 )
- استفاده از
فراخوانی به
setForegroundAsync()
که قبل از اتمام یکListenableWorker
تکمیل نمی شود ، اکنون از طریق یکIllegalStateException
در موردListenableFuture
بازگردانده شده ، از طریق غیرقانونی نشان داده می شود. ( AOSP/1262743 )پس از قطع یک
Worker
پیش زمینه ، اشکال را برطرف کنید که در آنForegroundService
متوقف نشود. ( b/155579898 ، AOSP/1302153 )رفع اشکال در جایی که
WorkManager
تلاش می کند چندین نمونه از یکWorker
را که به یک سرویس پیش زمینه متصل است ، اجرا کند ( B/156310133 ، AOSP/1309853 )
24 ژوئن 2020
androidx.work:work-*:2.4.0-rc01
:2.4.0-RC01 منتشر شده است. نسخه 2.4.0-RC01 شامل این تعهدات است.
رفع اشکال
- برنامه ریز در حال فرآیند اکنون از API های بهتری برای تعیین نام فرآیند استفاده می کند. این برای پشتیبانی بهتر برنامه هایی که از چندین فرآیند استفاده می کنند مفید است. ( AOSP/1324732 )
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
، و androidx.work:work-testing:2.4.0-beta01
work-testing:2.4.0-beta01 منتشر می شوند. نسخه 2.4.0-beta01 شامل این تعهدات است.
رفع اشکال
- پس از قطع یک
Worker
پیش زمینه ، اشکال را برطرف کنید که در آنForegroundService
متوقف نشود. ( b/155579898 ، AOSP/1302153 ) - رفع اشکال در جایی که
WorkManager
تلاش می کند چندین نمونه از یکWorker
را که به یک سرویس پیش زمینه متصل است ، اجرا کند ( B/156310133 ، AOSP/1309853 ) - هنگام استفاده از یک
DelegatingWorkerFactory
، پشتیبانی از کارخانه های پویا را برای تفسیر اضافه کنید. ( b/156289105 ، AOSP/1309745 ) - ردیابی را برای محدودیت های
BATTERY_NOT_LOW
از نزدیک با سیستم عامل تراز کنید. ( AOSP/1312583 )
29 آوریل 2020
androidx.work:work-*:2.4.0-alpha03
:2.4.0-alpha03 منتشر می شود. نسخه 2.4.0-alpha03 شامل این تعهدات است.
ویژگی های جدید
- WorkManager اکنون از Rxjava 3 پشتیبانی می کند. برای استفاده از Rxjava 3 ، باید وابستگی زیر را درج کنید:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"
. ( AOSP/1277904 ) - یک قانون جدید را اضافه کرد که تضمین می کند که پیاده سازی های
ListenableWorker
هنگام استفاده ازWorkerFactory
پیش فرض اکنونpublic
هستند. ( AOSP/1291262 )
تغییرات API
- فراخوانی
setProgressAsync()
پس از پایانListenableWorker
اعدام را تمام کرده است ، اکنون یکException
از طریقListenableFuture
نشان می دهد. ( AOSP/1285494 ) -
WorkQuery.Builder
اکنونfinal
است. ( AOSP/1275037 ) - روشهای کارخانه
WorkQuery.Builder
withStates
،withTags
withUniqueWorkNames
، به ترتیب بهfromStates
،fromTags
وfromUniqueWorkNames
تغییر نام داده اند. ( AOSP/1280287 )
رفع اشکال
-
SecurityException
را هنگام ردیابی وضعیت شبکه یک دستگاه نادیده بگیرید. ( b/153246136 ، AOSP/1280813 )
1 آوریل 2020
androidx.work:work-*:2.4.0-alpha02
:2.4.0-alpha02 منتشر می شود. نسخه 2.4.0-alpha02 شامل این تعهدات است.
ویژگی های جدید
- یک قانون جدید را اضافه کرد که هشدار می دهد که در هنگام
WorkRequest
، به هر دوConstraints.setRequiresCharging(...)
نیاز داردConstraints.setRequiresDeviceIdle(...)
برخی از دستگاه ها هرگز به طور همزمان شارژ و بیکار نیستند. بنابراین چنین درخواست هایی کمتر از آنچه انتظار می رفت اجرا می شود. ( AOSP/1253840 )
تغییرات API
با استفاده از یک
WorkQuery
توانایی پرس و جو برایWorkInfo
را اضافه کرد. این زمانی مفید است که توسعه دهندگان می خواهند با ترکیبی از ویژگی های مختلف ،WorkInfo
پرس و جو کنند. برای کسب اطلاعات بیشتر بهWorkQuery.Builder withStates(...)
،WorkQuery.Builder withTags(...)
یاWorkQuery.Builder withUniqueWorkNames(...)
نگاه کنید. ( AOSP/1253230 ، B/143847546 )فراخوانی به
setForegroundAsync()
که قبل از اتمام یکListenableWorker
تکمیل نمی شود ، اکنون از طریق یکIllegalStateException
در موردListenableFuture
بازگردانده شده ، از طریق غیرقانونی نشان داده می شود. ( AOSP/1262743 )
رفع اشکال
- قانون خط را که بررسی می کند مدت زمان نامعتبر برای
PeriodicWorkRequest
را بررسی می کند. ( AOSP/1254846 ، B/152606442 )
4 مارس 2020
androidx.work:work-*:2.4.0-alpha01
*:2.4.0-alpha01 منتشر شده است. نسخه 2.4.0-alpha01 شامل این تعهدات است.
ویژگی های جدید
برنامه ریزی در فرآیند
WorkManager
اکنون توانایی بیشتری دارد. پیش از این ، برنامه ریز فرآیند فقط در نظر می گرفت که کارهایی را که به تأخیر افتاده است و محدودیت های آنها برآورده شده است ، در نظر می گرفت. اکنون ، برنامه ریز در حال پردازشWorkRequest
دنبال می کند که ممکن است در آینده اجرا شود ، از جمله دوره هایPeriodicWorkRequest
. برنامه ریز فرآیند همچنین محدودیت های برنامه ریزی را رعایت نمی کند (اما هنوز هم به اندازهExecutor
که توسط کارگر استفاده می شود محدود است). این بدان معنی است که برنامه اکنون می تواندWorkRequest
بیشتری را انجام دهد که برنامه در پیش زمینه باشد. ( AOSP/1185778 )اضافه کردن امکان درخواست اطلاعات تشخیصی از WorkManager با استفاده از
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
. این اطلاعات مفید زیادی از جمله:- کارهای کاری که در 24 ساعت گذشته به پایان رسید.
- کارهای کاری که در حال حاضر در حال اجرا هستند.
- برنامه ریزی شده کار. ( AOSP/1235501 )
قوانین جدید خط که اجرا می شود:
- استفاده از
foregroundServiceType
مناسب برای استفاده از API هایsetForegroundAsync()
. ( b/147873061 ، AOSP/1215915 ) - مشخص کردن شناسه های
JobScheduler
کهWorkManager
باید هنگام استفاده مستقیم از API هایJobService
از آن استفاده کند. ( AOSP/1223567 )
- استفاده از
تغییرات API
اضافه کردن
ExistingWorkPolicy.APPEND_OR_REPLACE
که شبیه بهAPPEND
است ، اما زنجیره ای را که پیش نیازهای لغو یا شکست خورده است جایگزین می کند . ( b/134613984 ، AOSP/1199640 )امکان اضافه کردن یک
RunnableScheduler
سفارشی را برای ردیابیWorkRequest
که باید در آینده اجرا شود ، فراهم کنید. این توسط برنامه ریز در فرآیند استفاده می شود. ( AOSP/1203944 )
رفع اشکال
-
setProgress()
درRxWorker
زیرا قبلاً یکSingle<Void>
را بازگردانده بود که یک نوع غیرممکن است. یک API جدیدsetCompletableProgress()
اضافه کرد که به جای آن یکCompletable
بازگرداند. و قوانین جدید LINT را اضافه کرد که به مهاجرت به API های جدید کمک می کند. ( b/150080946 ، AOSP/1242665 )
18 مارس 2020
androidx.work:work-*:2.3.4
:2.3.4 منتشر شده است. نسخه 2.3.4 شامل این تعهدات است.
رفع اشکال
- رفع اشکالی که باعث می شود چندین مورد از یک
Worker
طولانی مدت اجرا شود ، پس از بیش از پنجره 10 دقیقه اجرای. ( AOSP/1247484 ، B/150553353 ) - رفع
IssueRegistry
LINT WorkManager. با تشکر از شما zacsweers از Slack ، برای سهم. ( AOSP/1217923 )
4 مارس 2020
androidx.work:work-*:2.3.3
منتشر شده است. نسخه 2.3.3 شامل این تعهدات است.
رفع اشکال
- رفع اشکال در صورت قطع شدن یک
Worker
، به درستی دوباره برنامه ریزی نمی شود. ( B/150325687 ، AOSP/1246571 )
19 فوریه 2020
androidx.work:work-*:2.3.2
منتشر می شود. نسخه 2.3.2 شامل این تعهدات است.
رفع اشکال
- مسئله ای را برطرف می کند که در مواردی نادر از 100 محدودیت شغلی در Jobcheduler فراتر رود. ( AOSP/1226859 ، B/149092520 )
- برای یک شرایط مسابقه در ConstraintControllers رفع کنید. ( AOSP/1220100 )
- چرخه چرخه خدمات پیش زمینه مدیریت را برای کارگران طولانی مدت بهبود بخشید. ( AOSP/1226295 )
- بهبود مدیریت لغو اعلان ها برای کارگران طولانی مدت در مورد لغو کارگران. ( AOSP/1228346 )
5 فوریه 2020
androidx.work:work-*:2.3.1
:2.3.1 منتشر شده است. نسخه 2.3.1 شامل این تعهدات است .
رفع اشکال
- بهتر مدیریت چرخه عمر
Notification
ها را برایWorker
طولانی مدت که در هنگام فعال بودنService
پیش زمینه اجرا می شود ، مدیریت کنید. ( AOSP/1218539 ، B/147249312 ) -
WorkManager
اکنون بهandroidx.sqlite:sqlite-framework:2.1.0
پایدار. ( AOSP/1217729 ) - قوانین LINT اضافه شده تا اطمینان حاصل شود که یک
foregroundServiceType
درAndroidManifest.xml
هنگام استفاده ازforegroundServiceType
S درForegroundInfo
مشخص شده است. ( AOSP/1214207 ، b/147873061 )
22 ژانویه 2020
androidx.work:work-*:2.3.0
از 2.3.0-rc01
بدون تغییر منتشر می شود. نسخه 2.3.0 شامل این تعهدات است .
تغییرات مهم از 2.2.0
- پشتیبانی از کار طولانی یا کار مهم از طریق
ListenableWorker#setForegroundAsync()
. - پشتیبانی از پیشرفت کارگران از طریق
ListenableWorker#setProgressAsync()
. - اکنون WorkManager قوانین اضافی را به عنوان بخشی از کتابخانه بسته بندی می کند که به زود گرفتن اشکالات کمک می کند.
8 ژانویه 2020
androidx.work:work-*:2.3.0-rc01
:2.3.0-RC01 منتشر شده است. نسخه 2.3.0-RC01 شامل این تعهدات است .
این نسخه با 2.3.0-beta02
یکسان است
رفع اشکال
- مصنوعات
work-testing
اکنون وابستگیapi
بهwork-runtime-ktx
تعریف می کند. ( AOSP/1194410 )
18 دسامبر 2019
androidx.work:work-*:2.3.0-beta02
:2.3.0-Beta02 منتشر شد. نسخه 2.3.0-beta02 شامل این تعهدات است .
ویژگی های جدید
- یک پیام خطای بهتر برای استثنائات SQLite غیر قابل بازیافت اضافه شده است. ( AOSP/1185777 )
- یک قانون خطی اضافه کرد که تضمین می کند که ارائه دهنده محتوا
androidx.work.impl.WorkManagerInitializer
ازAndroidManifest.xml
حذف می شود. ( AOSP/1167007 ) - هنگامی که
enqueue()
به جایenqueueUniquePeriodicWork()
برای یکPeriodicWorkRequest
استفاده می شود ، یک هشدار دهنده اضافه کرد. ( AOSP/1166032 )
API تغییر می کند
-
ForegroundInfo
اکنون شما را ملزم به مشخص کردنnotificationId
برای استفاده در هنگام استفاده ازListenableWorker.setForegroundAsync()
می کند. این یک تغییر شکستن است. این به شما امکان می دهد چندینWorker
طولانی مدت را به صورت موازی اجرا کنید.WorkManager
همچنین بهتر طول عمرNotification
ارائه شده را مدیریت می کند. ( b/145473554 ، AOSP/1181208 ، ASOP/1181216 ، ASOP/1183577 )
رفع اشکال
- رفع اشکال در اجرای AlarmManager که در آن هشدارها به درستی تمیز نمی شوند. ( AOSP/1156444 )
- رفع اشکال در جایی که یک لیست خالی از
WorkRequest
S باعث ایجاد یک زنجیرهWorkContinuation
نادرست شود. ( b/142835274 ، AOSP/1157051 )
تغییر وابستگی
- WorkManager اکنون از اتاق 2.2.2 استفاده می کند.
20 نوامبر 2019
androidx.work:work-*:2.3.0-beta01
:2.3.0-Beta01 منتشر شد. نسخه 2.3.0-beta01 شامل این تعهدات است .
ویژگی های جدید
- یک قانون جدید را اضافه کرد که به دلیل اجرای نادرست
androidx.work.Configuration.Provider
هنگام استفاده از اولیه سازی در صورت تقاضا ، از خطاهای توسعه دهنده جلوگیری می کند. AOSP/1164559
23 اکتبر 2019
androidx.work:work-*:2.3.0-alpha03
:2.3.0-alpha03 منتشر می شود. نسخه 2.3.0-alpha03 شامل این تعهدات است .
ویژگی های جدید
- اضافه شده
WorkManager.createCancelPendingIntent()
API که باعث می شود بدون نیاز به ثبت مؤلفه دیگری درAndroidManifest.xml
لغوWorkRequest
S را آسان کنید. این API باعث می شود که لغوWorkRequest
ازNotification
ها به خصوص آسان شود. ما انتظار داریم که این مورد با API های پیش زمینه جدید در 2.3.0 جفت شود. - WorkManager اکنون به
androidx.room:*:2.2.0
بستگی دارد.
API تغییر می کند
- تغییر نام نامگذاری
ForegroundInfo.getNotificationType()
بهForegroundInfo.getForegroundServiceType()
برای سازگارتر با API های پلت فرم زیرین. ( b/142729893 ، AOSP/1143316 )
رفع اشکال
- رفع اشکالی که در اثر تماس غیر ضروری به
setTransactionSuccessful()
در خارج از معامله ایجاد می شود. این برای مهاجرت های نادر اتفاق می افتد. ( b/142580433 ، AOSP/1141737 )
9 اکتبر 2019
androidx.work:work-*:2.3.0-alpha02
:2.3.0-alpha02 منتشر شد. نسخه 2.3.0-alpha02 شامل این تعهدات است .
ویژگی های جدید
- اکنون WorkManager از دویدن طولانی یا کار مهمی که باید توسط سیستم عامل زنده نگه داشته شود ، پشتیبانی می کند. برای اطلاعات بیشتر
ListenableWorker#setForegroundAsync()
(یاCoroutineWorker#setForeground()
برای کوتلین) نگاه کنید. ( AOSP/1133636 )
API تغییر می کند
- API
containsKey
API درData
بهhasKeyWithValueOfType
تغییر نام داده می شود. روش پسوند مربوطه در کتابخانهktx
نیز تغییر نام داده است. ( b/141916545 )
رفع اشکال
- برنامه های WorkManager وقتی تعداد محدودیت برنامه ریزی رویکرد
WorkRequest
را انجام می دهد ، نسبتاً کار می کند. ( AOSP/1105766 ) - WorkManager فقط در صورتی که کار از قبل به پایان نرسد
ListenableWorker#onStopped()
را گوش می دهد. ( b/140055777 ) - اکنون WorkManager هنگام قطع شدن یک کارگر یا رسیدن به حالت ترمینال خود ، اطلاعات پیشرفت را حذف می کند. ( AOSP/1114572 )
- اکنون
Data
دارایtoString()
است. ( b/140945323 ) - اکنون
Data
از روشequals()
برابر هستند. همچنین ازdeepEquals
برای انواعArray
پشتیبانی می کند. ( b/140922528 ) - WorkManager اکنون بانک اطلاعاتی داخلی و فایلهای ترجیحی خود را در فهرست پشتیبان تهیه نمی کند. ( b/114808216 )
22 آگوست 2019
androidx.work:work-*:2.3.September 5, 20190-alpha01
منتشر شده است. تعهدات موجود در این نسخه را می توان در اینجا یافت.
ویژگی های جدید
-
ListenableWorker
اکنون می تواند از طریق APIsetProgressAsync()
پیشرفت کند. همچنین یک APIsetProgress
مربوط بهsuspend
مربوطه را درCoroutineWorker
و یکsetProgress
درRxWorker
اضافه کرد که یکSingle<Void>
را برمی گرداند. با استفاده از این کارگران جدید API می توانند اطلاعات پیشرفت را از طریقWorkInfo
که دارای APIgetProgress
مربوطه است ، منتقل کنند. ( b/79481554 ) -
Data
دارای یک APIcontainsKey()
هستند که می تواند برای تأیید اعتبار داده های ورودی بهWorker
دارای کلیدهایی با نوع مورد انتظار باشد. ( b/117136838 ) - اکنون
Data
می توانند با استفاده ازData.toByteArray()
وData.fromByteArray()
سریال شوند. توجه داشته باشید که هیچ تضمینی نسخه ای باData
وجود ندارد ، بنابراین نباید آن را ادامه دهید یا از آن برای IPC بین برنامه ها استفاده کنید. آنها فقط بی خطر هستند که بین چندین فرآیند از همان برنامه استفاده شوند. - امکان مشخص کردن یک
InputMergerFactory
را از طریقConfiguration.setInputMergerFactory
اضافه کرد. ( b/133273159 )
API تغییر می کند
- اگر یک
WorkerFactory
به عنوان نمونه ای ازListenableWorker
که قبلاً مورد استفاده قرار گرفته است ، کار Mananager نمونه ای ازIllegalStateException
. ( b/139554406 ) - به روزرسانی های مستندات پیرامون لغو
ListenableFuture
و پاسخ بهonStopped()
درListenableWorker
. ( b/138413671 )
رفع اشکال
- برنامه ریز در حال فرآیند اکنون با محدودیت
idle
WorkRequest
نادیده می گیرد. این درخواست ها اکنون فقط توسطJobScheduler
انتخاب می شوند که دستگاه در واقعidle
باشد. ( AOSP/1089779 ) -
TestScheduler
اکنون به درستی ازExecutor
مشخص شده برای مجری وظیفه داخلی خود در تست ها استفاده می کند. ( AOSP/1090749 )
15 آگوست 2019
androidx.work:work-*:2.2.0
:2.2.0 منتشر می شود. تعهدات موجود در این نسخه را می توان در اینجا یافت.
این نسخه با androidx.work:work-*:2.2.0-rc01
یکسان است.
تغییرات مهم در 2.2.0 از 2.1.0
androidx.work:work-gcm:2.2.0
یک مصنوع جدید Maven است که از استفاده از GCMNetworkManager به عنوان یک برنامه ریز پشتیبانی می کند وقتی خدمات Google Play برای سطح API در دسترس است <= 22. پردازش پس زمینه در نسخه های API قدیمی. اگر برنامه شما از خدمات Google Play استفاده می کند ، این وابستگی را به پرونده Gradle خود اضافه کنید تا به طور خودکار پشتیبانی GCMNetWorkManager را دریافت کنید. اگر خدمات پخش در دسترس نباشد ، WorkManager همچنان به هشدار دهنده در دستگاه های قدیمی تر باز می گردد.
30 جولای 2019
androidx.work:work-*:2.2.0-rc01
*:2.2.0-RC01 منتشر شده است. تعهدات موجود در این نسخه را می توان در اینجا یافت.
رفع اشکال
- رفع اشکال در اجرای هشدار دهنده که باعث می شود سرویس به طور زودرس خاموش شود و منجر به
RejectedExecutionException
در موارد نادر شود. ( AOSP/1092374 ) ( B/138238197 ). - هنگام استفاده از API های
JobScheduler
در برخی از دستگاه ها ، یک راه حل برایNullPointerException
اضافه کرد. ( AOSP/1091020 ) ( b/138364061 ) ، ( b/138441699 )
19 جولای 2019
androidx.work:work-*:2.2.0-beta02
:2.2.0-Beta02 منتشر شد. تعهدات موجود در این نسخه را می توان در اینجا یافت.
رفع اشکال
- وابستگی غیر عمدی ژاکوکو که در
2.2.0-beta01
معرفی شده است.
17 جولای 2019
androidx.work:work-*:2.2.0-beta01
*:2.2.0-Beta01 منتشر شده است. تعهدات موجود در این نسخه را می توان در اینجا یافت.
ویژگی های جدید
-
androidx.work:work-gcm:2.2.0-beta01
یک مصنوع جدید Maven است که از استفاده از GCMNetworkManager به عنوان یک برنامه ریزی پشتیبانی می کند وقتی Google Play Services برای سطح API در دسترس است <= 22. این یک وابستگی اختیاری است که به قابل اعتماد تر کمک می کند و پردازش پس زمینه در نسخه های API قدیمی. اگر برنامه شما از خدمات Google Play استفاده می کند ، این وابستگی را به پرونده Gradle خود اضافه کنید تا به طور خودکار پشتیبانی GCMNetWorkManager را دریافت کنید. اگر خدمات پخش در دسترس نباشد ، WorkManager همچنان به هشدار دهنده در دستگاه های قدیمی تر باز می گردد.
رفع اشکال
- هنگام ردیابی وضعیت شبکه در قرص Nvidia Shield K1 ، برای غیرقانونی برای
IllegalArgumentException
رفع کنید. ( AOSP/1010188 )
11 جولای 2019
androidx.work:work-*:2.1.0
منتشر می شود. این نسخه با androidx.work:work-*:2.1.0-rc01
یکسان است.
تغییرات مهم از 2.0.1
-
work-runtime-ktx
اکنون به جاوا 8 نیاز دارد. اگر به هر مشکلی رسیدید ، می توانید موارد زیر را بهbuild.gradle
:kotlinOptions { jvmTarget = "1.8" }
اضافه کنید. - اولیه سازی در صورت تقاضا برای WorkManager ، که فقط در صورت ارجاع ، کارگر را ایجاد می کند. B/127497100 برای تنظیم پروژه خود برای اولیه سازی در صورت تقاضا:
- ابتکار عمل خودکار را غیرفعال کنید .
-
Configuration.Provider
پیاده سازی کنید. در مورد شیءApplication
سفارشی خود. - همه منابع
WorkManager.getInstance()
را بهWorkManager.getInstance(Context)
تغییر دهید. به عنوان بخشی از این تغییر ، ماWorkManager.getInstance()
کاهش داده ایم. همیشه تماس با تعویض NewWorkManager.getInstance(Context)
امن تر است ، حتی اگر شما در حال انجام اولیه تقاضا نیستید.
- اکنون
PeriodicWorkRequest
از تأخیرهای اولیه پشتیبانی می کند. برای تعیین تأخیر اولیه می توانید از روشsetInitialDelay
درPeriodicWorkRequest.Builder
استفاده کنید. b/111404867 - امکان تفویض یک یا چند
WorkerFactory
ثبت شده با استفاده ازDelegatingWorkerFactory
را اضافه کرد. b/131435993 - امکان سفارشی سازی
Executor
استفاده شده توسط WorkManager برای کلیه کتاب های داخلی خود را از طریقConfiguration.Builder.setTaskExecutor
اضافه کرد. - با استفاده از
TestWorkerBuilder
وTestListenableWorkerBuilder
در مصنوعاتwork-testing
، امکان ایجادWorker
قابل آزمایش واحد و کلاسهایListenableWorker
را اضافه کرد.- توجه داشته باشید که
work-testing
اکنون به عنوان یک وابستگی در کوتلین قرار می گیرد و به طور پیش فرض چندین پسوند Kotlin را شامل می شود.
- توجه داشته باشید که
- تلاش برای اجرای تلاش برای
WorkInfo
. b/127290461 - انواع
Data
هم اکنون می توانند بایت و آرایه های بایت را ذخیره و بازیابی کنند. این حداکثر اندازه اشیاءData
را تغییر نمی دهد. - اکنون WorkManager به
Room 2.1.0
بستگی دارد ، که باید برخی از مشکلات پایگاه داده را برطرف کند.
27 ژوئن 2019
androidx.work:work-*:2.1.0-rc01
:2.1.0-RC01 منتشر شده است. تعهدات موجود در این نسخه را می توان در اینجا یافت.
رفع اشکال
- رفع اشکالی که باعث می شود هنگام اجرای مشاغل با
JobScheduler
در حالی که یک نسخه پشتیبان تهیه شده در حال انجام بود ، در حال انجام است.
20 ژوئن 2019
androidx.work:work-*:2.1.0-beta02
منتشر شد. تعهدات موجود در این نسخه را می توان در اینجا یافت.
رفع اشکال
-
TestListenableWorkerBuilder
اکنون هنگام ایجاد نمونه هایی ازListenableWorker
WorkerFactory
صحیح استفاده می کند. b/135275844 - رفع اشکالی که باعث ایجاد رانش در ویندوزهای اعدام برای
WorkRequest
به دلیل مرگ فرآیند شد. b/135272196
13 ژوئن 2019
androidx.work:work-*:2.1.0-beta01
منتشر شده است. تعهدات موجود در این نسخه را می توان در اینجا یافت.
رفع اشکال
- اکنون WorkManager به
Room 2.1.0
بستگی دارد ، که باید برخی از مشکلات پایگاه داده را برطرف کند. - مقداری دیسک استارتاپ I/O را روی موضوع اصلی حذف کرد.
- یک بن بست بالقوه در ردیابی محدودیت را برطرف کرد. b/134361006
- پیش از این مشاغل نامعتبر منتسب به کارگر را لغو کرد. b/134058261
- برخی از تماس های دفاعی به API های Jobscheduler برای دستگاه های نادرست اضافه شد.
5 ژوئن 2019
androidx.work:*:2.1.0-alpha03
منتشر می شود.
رفع اشکال
- مستندات بهبود یافته برای
PeriodicWorkRequest
s. -
WorkManagerTestInitHelper
اکنون از مجری پس زمینه صحیح برای آزمایش استفاده می کند. - رفع مشکلات SQLite هنگام برخورد با معاملات بزرگ در برخی از دستگاه ها. ( b/130182503 )
- وابستگی های WorkManager اکنون دانه ای تر است. ( b/133169148 ).
- اشکالات خاص OEM در اجرای
JobScheduler
هنگام برنامه ریزی مشاغل با استفاده از WorkManager. - پیشرفت در برنامه ریزی مبتنی بر هشدار دهنده در مورد طول عمر خدمات که قبلاً باعث تصادفات نادر شده بودند. ( b/133313734 )
16 مه 2019
WorkManager 2.1.0-alpha02 منتشر شد. این نسخه شامل چندین API جدید است.
تغییرات API
اکنون
PeriodicWorkRequest
از تأخیرهای اولیه پشتیبانی می کند. برای تعیین تأخیر اولیه می توانید از روشsetInitialDelay
درPeriodicWorkRequest.Builder
استفاده کنید. b/111404867امکان تفویض یک یا چند
WorkerFactory
ثبت شده با استفاده ازDelegatingWorkerFactory
را اضافه کرد. b/131435993امکان سفارشی سازی
Executor
استفاده شده توسط WorkManager برای کلیه کتاب های داخلی خود را از طریقConfiguration.Builder.setTaskExecutor
اضافه کرد.مستندات بهبود یافته پیرامون
WorkRequest.keepResultsForAtLeast
( B/130638001 ) ، اولیه سازی در صورت تقاضا ، وPeriodicWorkRequest.Builder
( B/131711394 ).
24 آوریل 2019
WorkManager 2.1.0-alpha01 منتشر شده است. این نسخه شامل چندین API جدید است. لطفاً توجه داشته باشید که با شروع این نسخه ، ویژگی های جدیدی وجود خواهد داشت که به نسخه 1.x منتقل نمی شوند. توصیه می کنیم به 2.x تغییر دهید.
تغییرات API
- اولیه سازی در صورت تقاضا برای WorkManager ، که فقط در صورت ارجاع ، کارگر را ایجاد می کند. B/127497100 برای تنظیم پروژه خود برای اولیه سازی در صورت تقاضا:
- ابتکار عمل خودکار را غیرفعال کنید .
-
Configuration.Provider
پیاده سازی کنید. در مورد شیءApplication
سفارشی خود. - همه منابع
WorkManager.getInstance()
را بهWorkManager.getInstance(Context)
تغییر دهید. به عنوان بخشی از این تغییر ، ماWorkManager.getInstance()
کاهش داده ایم. همیشه تماس با تعویض NewWorkManager.getInstance(Context)
امن تر است ، حتی اگر شما در حال انجام اولیه تقاضا نیستید.
- با استفاده از
TestWorkerBuilder
وTestListenableWorkerBuilder
در مصنوعاتwork-testing
، امکان ایجادWorker
قابل آزمایش واحد و کلاسهایListenableWorker
را اضافه کرد.- توجه داشته باشید که
work-testing
اکنون به عنوان یک وابستگی ، کوتلین را به خود جلب می کند ، اما همچنین به طور پیش فرض چندین پسوند کوتلین را شامل می شود.
- توجه داشته باشید که
- تلاش برای اجرای تلاش برای
WorkInfo
. b/127290461 - انواع
Data
هم اکنون می توانند بایت و آرایه های بایت را ذخیره و بازیابی کنند. این حداکثر اندازه اشیاءData
را تغییر نمی دهد. -
CoroutineWorker.coroutineContext
deprecated. این زمینه به اشتباه به عنوان یکCoroutineDispatcher
تایپ شد. شما دیگر نیازی به آن ندارید زیرا می توانید خودتان در بدنه عملکرد تعلیق به CoroutInecontext مورد نظر بروید. -
RxWorker.createWork()
وRxWorker.getBackgroundScheduler()
اکنون با انواع بازگشت@NonNull
حاشیه نویسی شده اند.
9 آوریل 2019
WorkManager 2.0.1 منتشر می شود. این نسخه با 2.0.1-RC01 یکسان است.
3 آوریل 2019
WorkManager 2.0.1-RC01 منتشر شد. این نسخه شامل برخی از رفع اشکال است. برای کاربران Legacy 1.x ، برخی از این تغییرات در 1.0.1-RC01 نیز ظاهر می شوند.
رفع اشکال
- آزمایشات Robolectric اکنون با WorkManager به درستی کار می کند. b/122553577
- سقوط یک پرونده لبه را با محدودیت های ردیابی در API های قبل از jobscheduler تمیز نمی کند. b/129226383
- رفع یک
StackOverflowError
با زنجیرهای طولانی کار. b/129091233 - مستندات به روز شده برای
PeriodicWorkRequest
S نشان می دهد که زمان فلکس در API 23 پشتیبانی نمی شود. - برخی از پیوندهای شکسته در مستندات کوتلین را برطرف کرد.
20 مارس 2019
WorkManager 2.0.0 منتشر می شود. این نسخه با 2.0.0-RC01 یکسان است و نسخه Androidx از 1.0.0 پایدار با وابستگی های Androidx است. توصیه می کنیم این نسخه را به جای نسخه های Legacy 1.x هدف قرار دهید. کلیه توسعه فعال 2.x و 1.x فقط برای مدت زمان محدود رفع اشکال مهم را دریافت می کنند.
7 مارس 2019
WorkManager 2.0.0-RC01 منتشر می شود. این نسخه با 1.0.0 پایدار یکسان است اما وابستگی Androidx دارد. پس از رسیدن به 2.0.0 پایدار ، باید این نسخه را درج کنید و نسخه های Legacy 1.x فقط برخی از اشکالات مهم را دریافت می کنند. همه توسعه فعال 2.x را هدف قرار می دهد.
اسناد مرجع: جاوا
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") }
9 آوریل 2019
WorkManager 1.0.1 منتشر می شود. این نسخه با 1.0.1-RC01 یکسان است.
لطفاً توجه داشته باشید که ما به شدت کاربران را ترغیب می کنیم تا در WorkManager 2.x به روز شوند ، زیرا به روزرسانی های بسیار کمی در شاخه 1.x در حال حرکت به جلو خواهد بود. API های جدید نیز برای کتابخانه 1.x منتشر نمی شوند.
2 آوریل 2019
WorkManager 1.0.1-RC01 منتشر شد. این نسخه شامل برخی از رفع اشکال است.
رفع اشکال
- آزمایشات Robolectric اکنون با WorkManager به درستی کار می کند. b/122553577
- سقوط یک پرونده لبه را با محدودیت های ردیابی در API های قبل از jobscheduler تمیز نمی کند. b/129226383
- رفع یک
StackOverflowError
با زنجیرهای طولانی کار. b/129091233
05 مارس 2019
این نسخه پایدار 1.0.0 Workmanager است. این نسخه از WorkManager با 1.0.0-RC02 یکسان است.
21 فوریه 2019
این دومین نامزد انتشار برای انتشار پایدار 1.0.0 WorkManager است. این نسخه شامل دو رفع اشکال است.
رفع اشکال
اکنون
Worker
پس از تصادف برنامه به درستی برنامه ریزی شده اند. b/124546316Worker
که یکException
بدون بررسی را پرتاب می کنند ، اکنون به درستی مشخص شده اند کهFAILED
و دیگر روند برنامه را خراب نمی کنند.
14 فوریه 2019
این یک نامزد آزادی برای انتشار پایدار 1.0.0 WorkManager است. این نسخه شامل یک رفع اشکال است.
رفع اشکال
- اجرای مبتنی بر AlarmManager اکنون به درستی به ویندوزهای
flex
برای کارنامه های دوره ای احترام می گذارد. b/124274584
6 فوریه 2019
این نسخه شامل برخی از رفع اشکال است.
رفع اشکال
- پرونده ای را که
JobScheduler.getPendingJob(...)
در API 23 استفاده کرد ، رفع کرد. B/123893059 - رفع
NullPointerException
در دستگاه هایی که Android 5.1 (API سطح 22) یا پایین تر دارند. b/123835104
4 فوریه 2019
این نسخه شامل برخی از رفع اشکال است.
رفع اشکال
- برنامه ریزی بهبود یافته از دوره های دوره ای برای اجرای مبتنی بر AlarmManager.
- یک مورد را برطرف کرد که کارگر در هنگام استفاده از اجرای مبتنی بر AlarmManager نتوانست محدودیت ها را به درستی ردیابی کند. b/123379508
- یک مورد را برطرف کرد که کارگر نتوانست هنگام استفاده از اجرای مبتنی بر هشدار ، کار خود را برای مرگ فرآیند دوباره امتحان کند. b/123329850
- یک مورد را برطرف کرد که باعث می شود WorkManager هنگام استفاده از اجرای مبتنی بر AlarmManager ، Wakelocks را نشت کند.
25 ژانویه 2019
این نسخه شامل برخی از رفع اشکال است.
رفع اشکال
- ما یک رگرسیون
1.0.0-beta02
را معرفی کردیم که باعث می شد کار در برخی شرایط به درستی اجرا نشود. b/123211993 - یک مورد را برطرف کرد که کار به درستی از زمان پس انداز خودداری نمی کرد. b/122881597
- رفع یک
ConcurrentModificationException
در دستگاه هایی که Android 5.1 (API یا) یا پایین تر دارند. این ادامه رفع در1.0.0-beta02
است. b/121345393 - اضافه شده
exported=false
برای برخی از مؤلفه های موجود در مانیفست ما که این حاشیه نویسی را از دست داده اند. - اطلاعات مربوط به نحوه تعامل WorkManager با سیستم عامل در مستندات سطح بسته را شامل می شود.
15 ژانویه 2019
این نسخه شامل برخی از رفع اشکال است.
رفع اشکال
- یک مورد لبه را برطرف کرد که در آن کار دوره ای می تواند بیش از یک بار در هر بازه در دستگاه هایی که Android 6.0 را اجرا می کنند (API سطح 23) اجرا شود. b/121998363
- رفع یک
ConcurrentModificationException
در دستگاه هایی که Android 5.1 (API سطح 22) یا پایین تر دارند. b/121345393 - اجرای اشتباه کار در هنگام محدودیت ها در دستگاه هایی که Android 5.1 (API سطح 22) یا پایین تر دارند ، برآورده نمی شود. b/122578012
- انجام کار بهینه سازی بهینه سازی شده در برخی موارد لبه سریعتر. b/122358129
- تغییری برای پرداختن به شرایط بالقوه مسابقه در بین موارد متعدد
LiveData
که کارگر از آن استفاده می کند ، اضافه کرد. - به جای
1.1.1-rc01
به استفاده از وابستگیRoom
1.1.1
منتقل شد. این نسخه ها یکسان هستند. b/122578011
19 دسامبر 2018
این نسخه حاوی تغییر API نیست. با حرکت به جلو ، انتظار می رود WorkManager تا نسخه بعدی API پایدار بماند ، مگر اینکه یک مشکل مهم وجود داشته باشد. این نسخه شامل برخی از رفع اشکال است.
رفع اشکال
- فرزندان پیش از این که از کار والدین با موفقیت تکمیل شده اند ، دیگر اجرا نخواهند شد. b/120811767
- کلاسهای ورود به سیستم به درستی اولیه (که در درجه اول در طول تست ها ظاهر می شوند).
12 دسامبر 2018
این نسخه حاوی یک تغییر جزئی API است که برای برخی از کاربران Kotlin مفید خواهد بود.
تغییرات API
-
androidx.work.Result
به عنوان یک کلاس درونی ازListenableWorker
منتقل شده است. این امر مانع از تغییر مجدد درگیری با کلاسResult
سطح بالای کوتلین می شود. این یک تغییر API در حال شکستن است. b/120564418
شکستن API تغییر می کند
-
androidx.work.Result
به عنوان یک کلاس درونی ازListenableWorker
منتقل شده است.
5 دسامبر 2018
این نسخه حاوی برخی از تغییرات API در حال شکستن است. لطفاً بخش Breaking API تغییرات را در زیر مشاهده کنید. این نسخه به احتمال زیاد به عنوان اولین بتا ما منتشر می شود. alpha12
همچنین حاوی به روزرسانی های گسترده مستندات است.
تغییرات API
- یک مصنوعات جدید ،
work-rxjava2
،RxWorker
معرفی می کند. این یکListenableWorker
است که انتظار دارد یکSingle<Payload>
. - پشتیبانی از Firebase JobDispatcher به دلیل استهلاک قریب الوقوع آن حذف شده است. این بدان معناست که مصنوعات
work-firebase
در حالی که به بتا می رویم دیگر به روز نمی شود. ما در آینده به دنبال اضافه کردن یک گزینه جایگزین خواهیم بود. -
Payload
ترکیبی درResult
.Result
اکنون یک "کلاس مهر و موم شده" با سه پیاده سازی بتونی است که می توانید از طریقResult.success()
(یاResult.success(Data)
) ،Result.failure()
(یاResult.failure(Data)
) وResult.retry()
بدست آورید.Result.retry()
. اکنون به جایPayload
Result
ListenableFuture
شما نتیجه می گیرد.Worker
روش های گیرنده و تنظیم کننده ای برایData
خروجی ندارند. این یک تغییر شکستن است. - 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
ContentUriTriggers
class 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
, andOneTimeWorkRequest
to 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 existingcombine
methods 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.
-
LiveData
that is observed viaobserveForever
is 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 aWorkInfo
with theCANCELLED
State
duringListenableWorker.onStopped()
. - Treat
null
Result
s 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-firebase
artifact will no longer be updated as we head into beta. We will be looking into adding an alternative in the future. - Combined
Payload
intoResult
.Result
is now a "sealed class" with three concrete implementations, which you can obtain viaResult.success()
(orResult.success(Data)
),Result.failure()
(orResult.failure(Data)
), andResult.retry()
. YourListenableFuture
s now resultResult
instead ofPayload
.Worker
s don't have getter and setter methods for outputData
. - Added
Operation.await()
andListenableFuture.await()
Kotlin extension methods. - Renamed
Operation.getException()
toOperation.getThrowable()
. - The
ContentUriTriggers
class and methods referencing it are no longer available for public usage. - Removed the rest of the varargs methods in
WorkManager
,WorkContinuation
, andOneTimeWorkRequest
to 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 existingcombine
methods are more understandable.
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-ktx
introduces a newCoroutineWorker
. -
WorkStatus
has been renamed toWorkInfo
. All correspondinggetStatus
method variants have been renamed to the correspondinggetWorkInfo
variants. This is a breaking change. -
ListenableWorker.onStopped()
no longer accepts has a boolean argument representing if theWorkRequest
was cancelled.WorkManager
no longer makes this distinction. This is a breaking change. -
androidx.work.test
package has been renamed toandroidx.work.testing
package. This is a breaking change. - Setters on
Constraints
are 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
WorkStatus
is 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
@NonNull
annotations to the public API to improve ergonomics of the API. - Add
WorkManager.enqueueUniqueWork()
API to enqueue uniqueOneTimeWorkRequest
s without having to create aWorkContinuation
. - All variants of
enqueue
andcancel
methods onWorkManager
now return a newOperation
type. This is a breaking change. - All variants of
enqueue
no longer accept varargs forWorkRequest
s. 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
initialize
WorkManager
more than once per process will now result in anIllegalStateException
. This is a breaking change.
رفع اشکال
-
WorkRequest.Builder
s in thework-runtime-ktx
artifact now useListenableWorker
s. Fixes b/117666259 - Ensure the next run time for
PeriodicWork
is 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
-
WorkStatus
has been renamed toWorkInfo
. All correspondinggetStatus
method variants have been renamed to the correspondinggetWorkInfo
variants. -
ListenableWorker.onStopped()
no longer accepts has a boolean argument representing if theWorkRequest
was cancelled.WorkManager
no longer makes this distinction. -
androidx.work.test
package has been renamed toandroidx.work.testing
package. - Setters on
Constraints
are 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
WorkStatus
is no longer a part of the public API. -
Configuration.getMaxJobSchedulerID()
andConfiguration.getMinJobSchedulerID()
are renamed toConfiguration.getMinJobSchedulerId()
andConfiguration.getMaxJobSchedulerId()
respectively. - All variants of
enqueue
andcancel
methods onWorkManager
now return a newOperation
type. - All variants of
enqueue
no longer accept varargs forWorkRequest
s. - Attempting to
initialize
WorkManager
more than once per process will now result in anIllegalStateException
.
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
deprecated
methods and classes, notably the defaultWorker
constructor. This is a breaking API change. - Renamed
NonBlockingWorker
toListenableWorker
, which is now an unhidden public class and ready for usage.-
ListenableWorker
provides 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 theListenableFuture
appropriately. Reference implementations ofListenableFuture
s are provided in theFutures
package inalpha02
(see below theWorkManager
section). -
Worker
extendsListenableWorker
and still operates as before, with an abstractResult doWork()
method. - Shuffled some methods and members from
Worker
toListenableWorker
. - We shall soon provide reference implementations for
ListenableWorker
s that use Kotlin coroutines (once the stable versions are released) and RxJava2.
-
- The interface
WorkerFactory
and the concrete implementationDefaultWorkerFactory
have 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-createdWorkerFactory
instances. 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
ListenableFuture
s. 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
ListenableFuture
s 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 theFuture
s contract. - To maintain parity with the synchronous
getStatus*
methods, we have providedListenableFuture
variants, and renamed the existing ones that returnedLiveData
to 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.pro
files. 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
Worker
constructor. b/116296569 - Fix potential
NullPointerException
in a race condition where work wasREPLACE
d. b/116253486 and b/116677275 -
WorkContinuation.combine()
now accepts one or moreWorkContinuation
s instead of two or more. b/117266752
Breaking API Changes
- Removed all previously
deprecated
methods and classes, notably the defaultWorker
constructor. - The interface
WorkerFactory
and the concrete implementationDefaultWorkerFactory
have been merged into an abstract class calledWorkerFactory
. - Removed
WorkManager.synchronous()
andWorkContinuation.synchronous()
. -
WorkManager.getStatus*()
methods now returnListenableFuture
s.WorkManager.getStatus*LiveData()
returnLiveData
s.
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
LiveData
internally.
تغییرات API
- You can now create your own
Worker
instances at runtime by specifying aWorkerFactory
as part of theWorkManager.Configuration
. The fallback factory isDefaultWorkerFactory
, which matches behavior of previous versions of WorkManager.- The default constructors for
Worker
andNonBlockingWorker
are 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
ListenableFuture
artifact 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
TestDriver
viaTestDriver.setInitialDelayMet(UUID)
andTestDriver.setPeriodDelayMet(UUID)
. b/113360060
Breaking Changes
- The default
Worker
andNonBlockingWorker
constructors are deprecated. Please migrate to the new constructor ASAP. Future versions will remove the default constructor.
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
Data
to indicate the limit is 10KB. - Lowered maximum value of
Configuration.setMaxSchedulerLimit(int)
to 50 to account for some latency inJobScheduler
processing completion. b/112817355
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
JobScheduler
jobs limit. b/111569265 - Fixed a
ConcurrentModificationException
inConstraintTracker
. b/112272753 - Changed return type annotations of
Data.getBooleanArray(String)
andData.getIntArray(String)
to@Nullable
instead of@NonNull
. b/112275229
تغییرات API
-
Worker
now extends a new class,NonBlockingWorker
. This does not affect any current usage. In the future,NonBlockingWorker
will become a fully supported entity for custom threading solutions. - Changed return type annotations of
Data.getBooleanArray(String)
andData.getIntArray(String)
to@Nullable
instead 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.
1 آگوست 2018
رفع اشکال
- Prevent a database lock when scheduling work. b/111801342
- Fix a bug which causes
PeriodicWork
to not run on schedule when in Doze mode. b/111469837 - Fix a race condition when tracking constraints which causes
WorkManager
to crash. googlecodelabs/android-workmanager/issues/56 - Create unique
WorkRequest
s when usingWorkRequest.Builder#build()
. b/111408337 - Enable the use of
RescheduleReceiver
only when there areWorkRequest
s that need it. b/111765853
24 جولای 2018
تغییرات API
-
WorkManager.getInstance()
is now annotated with@NonNull
instead 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.INFO
and 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 theConstraints
constructor,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
PeriodicWorkRequest
s when usingJobScheduler
. b/110798652 - Fixed an issue with
PeriodicWorkRequest
s 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
BroadcastReceiver
s 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
Breaking Changes
-
WorkManager.getInstance()
is now annotated with@NonNull
instead 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 theConstraints
constructor,Data.toByteArray()
, andData.fromByteArray(byte[])
.
26 ژوئن 2018
رفع اشکال
-
PeriodicWorkRequest
s are now correctly rescheduled when using theAlarmManager
based 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.
19 ژوئن 2018
رفع اشکال
Fixed a race condition in the
AlarmManager
based implementation. b/80346526 .Fixed duplicate jobs when using
JobScheduler
after 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-ktx
dependency.WorkManager now uses
Room
version1.1.1-rc1
.
تغییرات API
- Added
getStatusesSync()
, the synchronous version ofWorkContinuation.getStatuses()
. -
Worker
has the ability to distinguish between user-initiated cancellation and temporary os-requested stopping.Worker.isStopped()
returnstrue
if any kind of stop has been requested.Worker.isCancelled()
returnstrue
when 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 toJobScheduler
orAlarmManager
. This helps preventWorkManager
from taking all your availableJobScheduler
slots. - Added
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
which helps define a range ofJobScheduler
job ids safe forWorkManager
to 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 uniquePeriodicWorkRequest
s. b/79600647 -
WorkManager.cancelAllWork()
cancels allWorker
s. Libraries that depend onWorkManager
can 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
WorkRequest
s, which is the fully qualified class name for theWorker
. This allows the ability to removeWorkRequest
s withouttag
s or when theid
is not available. b/109572351
Breaking Changes
- Renamed
Worker.WorkerResult
toWorker.Result
. -
Worker.onStopped
now has an additionalisCancelled
parameter which is set totrue
when theWorker
has explicitly been cancelled.
24 مه 2018
رفع اشکال
- Fixed a
NullPointerException
onState.isFinished()
. b/79550068 - Fixed an issue which caused
Worker
s 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
Worker
s to the background thread. - The
AlarmManager
implementation now correctly cleans up when all pending work is complete. - Fixed cleanup SQL queries which affected non-English locales. b/80065360
- Added support for
float
s inData
. b/79443878 -
Data.Builder.putAll()
now returns an instance of theBuilder
. b/79699162 - More javadoc and fixes in documentation. b/79691663
تغییرات API
-
Worker
s can react to being stopped.Worker.isStopped()
can be used to check if aWorker
has been stopped.Worker.onStopped()
can be used to perform lightweight cleanup operations. -
Worker.getTags()
API returns aSet
of tags associated with theWorker
. - Added
javax.time.Duration
overloads for APIs which take a combination of duration andTimeUnit
s. This is guarded by@RequiresApi(26)
. -
WorkManager
extensions have moved from theandroidx.work.ktx
package to theandroidx.work
package. The old extensions are deprecated and will be removed in a future version. -
Configuration.withExecutor()
is deprecated. UseConfiguration.setExecutor()
instead.
8 مه 2018
WorkManager simplifies scheduling and execution of guaranteed, constraint-aware background work. This initial release is 1.0.0-alpha01
.