מנהל עבודה
העדכון האחרון | גרסה יציבה | מועמד לפרסום | גרסת בטא | גרסת אלפא |
---|---|---|---|---|
7 באוגוסט 2024 | 2.9.1 | - | - | 2.10.0-alpha02 |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-WorkManager, צריך להוסיף את מאגר Google Maven project:
מוסיפים את יחסי התלות של פריטי המידע הנדרשים בקובץ 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" }
Kotlin
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.
אפשר לקרוא מידע נוסף על יחסי תלות במאמר הוספת יחסי תלות של build.
משוב
המשוב שלך עוזר לנו לשפר את Jetpack. נשמח לשמוע אם גילית בעיות חדשות או אם יש לך רעיונות לשיפור הספרייה הזו. מומלץ לעיין בעיות קיימות בספרייה הזו לפני שיוצרים ספר חדש. אפשר להוסיף את ההצבעה שלך לבעיה קיימת על ידי לחיצה על לחצן הכוכב.
מקורות מידע בנושא מעקב אחר בעיות אפשר לקבל מידע נוסף.
גרסה 2.10
גרסה 2.10.0-alpha02
17 באפריל 2024
androidx.work:work-*:2.10.0-alpha02
משוחרר. גרסה 2.10.0-alpha02 מכילה את התחייבויות אלה.
שינויים ב-API
- נוספה היכולת לקלוט קטעי מעקב באמצעות
@RestrictTo
Tracer
ב-WorkManager
שניתנים להגדרה. (I17d7f, b/260214125) - נוסף אל
Configuration.workerCoroutineContext
לשליטה של הסדרן שבו מתבצעת ההפעלה שלCoroutineWorker
. זה עוזר למנוע לחלוטין שימוש ב-Dispatchers.Default
ב-WorkManager
. (Icd1b7) - הוספה של רכיבי handler מותאמים אישית לחריגים ל-Workers (Ib1b74, b/261190695)
- עכשיו אפשר לבנות את
OneTimeWorkRequest.Builder
ואתPeriodicWorkRequest.Builder
באמצעותKClass
במקוםClass
:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()
(Ib55f6) - כיתה אחת (
WorkManager
) הועברה ל-Kotlin. עכשיו שיטות שמחזירותLiveData
,ListenableFuture
אוFlow
מספקות מידע נכון על יכולת ה-null. יכול להיות שתצטרכו לבצע שינויים בהגדרות של הלקוחות את קוד המקור, אם הנחות ה-null בקוד הזה שגויות. (If6757)
גרסה 2.10.0-alpha01
24 בינואר 2024
androidx.work:work-*:2.10.0-alpha01
משוחרר. גרסה 2.10.0-alpha01 מכילה את התחייבויות אלה.
תכונות חדשות
- מפתחים יכולים לציין את
NetworkRequest
כאילוץ לעובד באמצעות השיטהConstraints.setRequiredNetworkRequest
. כך ניתן לקבוע באופן פרטני יותר את הרשת שהעובד הזה צריך להפעיל.
שינויים ב-API
- הוספת אפשרות לציין את
NetworkRequest
כאילוץ. (Id98a1, b/280634452)
גרסה 2.9
גרסה 2.9.1
7 באוגוסט 2024
androidx.work:work-*:2.9.1
משוחרר. גרסה 2.9.1 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תיקון קריסה שנגרמה על ידי ניסיון של
WorkManager
להפעיל מחדש עובד ותיק (כלומר עובד שפועל בחזית) כשהסוג הקדמי של העבודה היה הרשאות נדרשות מראש ל-Android 14 שבוטלו. (b/333957914)
גרסה 2.9.0
29 בנובמבר 2023
androidx.work:work-*:2.9.0
משוחרר. גרסה 2.9.0 כוללת את ההתחייבויות האלה.
שינויים חשובים מאז 2.8.0
- ניראות (observability) דרך
Flow
-s. במקוםLiveData
, אפשר עכשיו לראות את ההתקדמות של ה-Worker באמצעות ה-flows דרךWorkManager.getWorkInfosFlow
ושיטות דומות. - עכשיו
WorkManager
מספק רמז לסיבה שבגללה הופסק עובד. אפשר לחפש את השאילתה מהעובד עצמו בשיטהgetStopReason()
או מ-WorkInfo
דרךgetStopReason()
. - תזמון מדויק של עובדים תקופתיים דרך
setNextScheduleTimeOverride
. כך ניתן לחשב באופן דינמי את לוח הזמנים התקופתי הבא לעבודה, שיכול לשמש להטמעת תכונות מתקדמות כמו זמני רענון מותאמים, התנהגות מותאמת אישית של ניסיונות חוזרים או הפעלת קובץ חדשותי בפיד לפני שהמשתמש מתעורר בכל בוקר ללא דריפט. צריך להשתמש בפונקציהExistingPeriodicWorkPolicy.UPDATE
בשיטות האלה כדי להימנע מביטול עובד שפועל כרגע ולתזמן את התור הבא. - בדיקה של WorkManager באמצעות התאמת שרשורים בסביבת הייצור. אפשר להשתמש ב-
ExecutorsMode.PRESERVE_EXECUTORS
ב-initializeTestWorkManager
כדי לשמר את קובצי ה-API שהוגדרו ב-Configuration
ולהשתמש ב-thread הראשי האמיתי. - ממשקי API של Coroutines כמו
CoroutineWorker
הועברו מ-ktx נוסף של ארטיפקטים לעבודות ארטיפקטים לסביבת העבודה הראשית של ארטיפקטים. השדה work-runtime-ktx ריק.
שינויים ב-API
stopReason
נוסף אלWorkInfo
. היא הופכת אתstopReason
לזמין אחרי שהעובד רץ. זה יכול להיות שימושי בדיווח עלstopReason
באופן שמיש, כי לאחר עצירה של עובד, אפליקציה עצמה עלולה להרוג במהירות. (I21386)- אפשר להגדיר את
Clock
באמצעות הגדרה ולהשתמש בו כדי לעודד ביצוע בדיקות של רצף ביצוע של בדיקות Worker. (Ic586e) - השיטה
getStopReason()
נוספה אלListenableWorker
, נותנת רמז למה העובד הופסק. (I07060) - הוספת את
WorkManagerTestInitHelper#closeWorkDatabase()
כדי למנוע את האזהרה של CloseGuard לגבי משאבים שדלפו. (Ia8d49) - ה-constructor של
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 מכילה את ההתחייבויות האלה.
- לא בוצעו שינויים מאז מהדורת הבטא האחרונה
גרסה 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 מכילה את התחייבויות אלה.
תכונות חדשות
- עכשיו
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 מכילה את התחייבויות אלה.
תכונות חדשות
- ניראות (observability) דרך
Flow
-s. במקוםLiveData
, אפשר עכשיו לראות את ההתקדמות של ה-Worker באמצעות ה-flows דרךWorkManager.getWorkInfosFlow
ושיטות דומות. - תזמון מדויק של עובדים תקופתיים דרך
setNextScheduleTimeOverride
. כך ניתן לחשב באופן דינמי את לוח הזמנים התקופתי הבא לעבודה, שיכול לשמש להטמעת תכונות מתקדמות כמו זמני רענון מותאמים, התנהגות מותאמת אישית של ניסיונות חוזרים או הפעלת קובץ חדשותי בפיד לפני שהמשתמש מתעורר בכל בוקר ללא דריפט. צריך להשתמש בפונקציהExistingPeriodicWorkPolicy.UPDATE
בשיטות האלה כדי להימנע מביטול של עובד שפועל כרגע ולתזמן את התור הבא. - הבדיקה של
WorkManager
בסביבת ייצור תואמת לשרשורים. אפשר להשתמש ב-ExecutorsMode.PRESERVE_EXECUTORS
כדי לשמר את רכיבי הביצוע שהוגדרו ב-Configuration
ולהשתמש ב-thread הראשי האמיתי. - ממשקי API של Coroutines כמו
CoroutineWorker
הועברו מארטיפקט נוסףwork-runtime-ktx
אל הארטיפקט הראשיwork-runtime
. השדהwork-runtime-ktx
ריק עכשיו.
שינויים ב-API
- ה-constructor של
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.Builder
, שהיו קיימות בגרסאות המוקדמות שלWorkManager
. (I6d7d2) - ב-
WorkManager
יש עכשיו מגבלה נפרדת לעובדי תוכן ב-URI, כדי לספק להם מיקומי מודעות מובטחים בJobScheduler
, כדי למנוע מצב שבו עדכוני תוכן חסרים בעומס הגבוה. אפשר להגדיר את המגבלה דרךConfiguration.Builder.setContentUriTriggerWorkersLimit
. (Ic128f) - המגבלות נוספו אל
WorkInfo
. (I162c0)
גרסה 2.8
גרסה 2.8.1
22 במרץ 2023
androidx.work:work-*:2.8.1
משוחרר. גרסה 2.8.1 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תוקנה שגיאת ANR ב-
RescheduleReceiver
שקודם לכן לא טיפלה בצורה נכונה בשני שידורים בו-זמנית. (b/236906724)
גרסה 2.8.0
8 בפברואר 2023
androidx.work:work-*:2.8.0
משוחרר. גרסה 2.8.0 כוללת את ההתחייבויות האלה.
שינויים חשובים מאז 2.7.0
תכונות חדשות
- נוספה היכולת לעדכן את
WorkRequests
באופן לא פולשני, תוך שמירה על זמן הסידור המקורי, יצירת שרשורים וכו'. לפרטים נוספים, אפשר לעיין בפוסט המפורט בבלוג על התכונה הזו, וגם ב-Java Docs של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>
באמצעות setSchedulingLimitHandler) - נוספה האפשרות לספק
Consumer<Throwable>
דרך setInitializationאפסHandler כדי לקבוע אם היו בעיות במהלך הניסיון לאתחל את 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
הופעל. בנוסף, נוסף ממשק API חדש שלgetConfiguration()
שמיועד למפתחי ספריות, כדי לקבל את ההגדרות שבאמצעותן הופעלוWorkManager
. (I6eff3, b/212300336)
תיקוני באגים
- תוקנה בעיה במתזמן החמדן שתמנע את ההפעלה של עובדים באופן מיידי כשיש עומס. (I9686b, b/248111307)
- נוספה
@RequiresPermission
לממשקי API שמחייבים להעניק את ההרשאהPOST_NOTIFICATIONS
ב-SDK מגרסה 33 ואילך. (Ie542e, b/238790278) - להפיץ ביטולים ב-
CoroutineScope
ל-ListenableFuture
כשמשתמשים ב-suspendCancellableCoroutine
.
גרסה 2.8.0-rc01
7 בדצמבר 2022
androidx.work:work-*:2.8.0-rc01
משוחרר. גרסה 2.8.0-rc01 מכילה את ההתחייבויות האלה.
תכונות חדשות
- אין תכונות חדשות בגרסה הזו. מדובר בעיקר במעבר בין גרסאות
גרסה 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 מכילה את התחייבויות אלה.
שינויים ב-API
- נוספו
WorkerInfo.getGeneration()
ו-WorkerParameters.getGeneration()
שמחזירים את יצירת העובד. לעובד יש כמה דורות, אם הוא עודכן דרךWorkManager.updateWork
אוWorkManager.enqueueUniquePeriodicWork
באמצעותExistingPeriodicWorkPolicy.UPDATE
. שימו לב שאם ה-worker פועל כרגע, יכול להיות שהשיטה הזו תחזיר דור חדש יותר מזה של העובד הנוכחי אם התבצע עדכון במהלך ביצוע ה-worker. (I665c5, b/219446409) (I128a9, b/219446409) - נוסף
InitializationExceptionHandler
, מטפל חריגים שיכול לשמש כדי לקבוע אם היו בעיות במהלך הניסיון לאתחל אתWorkManager
. (I061de)
גרסה 2.8.0-alpha03
10 באוגוסט 2022
androidx.work:work-*:2.8.0-alpha03
משוחרר. גרסה 2.8.0-alpha03 מכילה את התחייבויות אלה.
תכונות חדשות
- נוספה היכולת לעדכן את
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 מכילה את התחייבויות אלה.
שינויים ב-API
- עכשיו אפשר לבנות את האילוצים באופן ישיר במקום להשתמש ב-builder, שמתאים למשתמשי Kotlin. (Idc390, b/137568653)
- נוספה האפשרות לבדוק אם
WorkManager
הופעל. בנוסף, נוסף ממשק API חדש שלgetConfiguration()
שמיועד למפתחי ספריות, כדי לקבל את ההגדרות שבאמצעותן הופעלוWorkManager
. (I6eff3, b/212300336)
גרסה 2.8.0-alpha01
12 בינואר, 2022
androidx.work:work-*:2.8.0-alpha01
משוחרר. גרסה 2.8.0-alpha01 מכילה את התחייבויות אלה.
שינויים ב-API
- שיטות העזרה
WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
, הוספנו אתWorkQuery.fromTags
כדי ליצור ישירות את WorkQuery. (If48f2, b/199919736) - הוספת שיטות ניסיוניות של BuildCompat לערכות SDK עתידיות (Iafd82, b/207528937)
- הוספה של
getForegroundInfo
אלWorker
. (Ic1ead) - שיטות עזרה
WorkQuery.fromIds
ליצירת שאילתת WorkQuery ישירות ממזהים נוספו. (Ie5bdf, b/199919736) - ב-RxWorker יש עכשיו
setForeground
שמחזירCompletable
אפשר להשתמש בפונקציהsetForegroundInfoAsync
שמחזירהListenableFuture
(I85156) - ב-RxWorker for RxJava 2 יש עכשיו
getForegroundInfo
שמחזירSingle
אפשר להשתמש בפונקציהgetForegroundInfoAsync
שמחזירהListenableFuture
(I21c91, b/203851459) - ב-RxWorker for RxJava 3 יש עכשיו
getForegroundInfo
שמחזירSingle
אפשר להשתמש בפונקציהgetForegroundInfoAsync
שמחזירהListenableFuture
(I1ca8a) - ב-RxWorker יש עכשיו
setForeground
שמחזירCompletable
אפשר להשתמש בפונקציהsetForegroundInfoAsync
שמחזירהListenableFuture
(I992a3, b/203851459)
תיקוני באגים
- להפיץ ביטולים ב-
CoroutineScope
ל-ListenableFuture
כשמשתמשים ב-suspendCancellableCoroutine
. (I77e63)
גרסה 2.7
גרסה 2.7.1
17 בנובמבר 2021
androidx.work:work-*:2.7.1
משוחרר. גרסה 2.7.1 כוללת את ההתחייבויות האלה.
תיקוני באגים
- ביטולים ב-
CoroutineScope
יועברו אלListenableFuture
כשמשתמשים ב-suspendCancellableCoroutine
. (I77e63) - הודעת חריגת נרשמת מיידית כשבקשות עבודה באיחור מסומנות כמזרזות. bef1762
גרסה 2.7.0
13 באוקטובר 2021
androidx.work:work-*:2.7.0
משוחרר. גרסה 2.7.0 כוללת את ההתחייבויות האלה.
שינויים חשובים מאז 2.6.0
ב-WorkManager משיקים API חדש של
WorkRequest.Builder.setExpedited(...)
שיכול לעזור בהגבלות על שירות שפועל בחזית ב-Android 12.כשמשתמשים ב-
setExpedited(...)
, WorkManager מעניק גישה למשימות מהירות ב-JobScheduler החל מ-Android 12, ומספק תאימות לאחור בגרסאות קודמות של Android על ידי הענקת גישה לשירות Foreground.
גרסה 2.7.0-rc01
29 בספטמבר 2021
androidx.work:work-*:2.7.0-rc01
משוחרר. גרסה 2.7.0-rc01 מכילה את ההתחייבויות האלה.
הגרסה הזו זהה ל-androidx.work:work-*:2.7.0-beta01
.
גרסה 2.7.0-beta01
1 בספטמבר 2021
androidx.work:work-*:2.7.0-beta01
משוחרר. גרסה 2.7.0-beta01 מכילה את התחייבויות אלה.
תכונות חדשות
- הפחתת ריבוי תהליכים של SQLite במהלך אתחול WorkManager.
שינויים ב-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 מכילה את התחייבויות אלה.
הגרסה הזו גם כוללת תיקוני באגים מהגרסה של 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()
כבר לא הוצאה משימוש. - מומלץ להשתמש ב-API של
WorkRequest.Builder.setExpedited(...)
כשהדבר אפשרי. כדי לספק תמיכה טובה יותר במצבים שבהם האפליקציה לא כפופה להגבלות על שירות שפועל בחזית, מפתחים יכולים להשתמש ב-API שלListenableWorker.setForegroundAsync()
. - אם מתבצעת קריאה לפונקציה
ListenableWorker.setForegroundAsync()
, כשהאפליקציה כפופה להגבלות על השירות שפועל בחזית, הפעולה הזו תגרום להצגת השגיאה ForegroundServiceStartNotAllowedOpt.
תיקוני באגים
- כשמתזמנים מחדש משימות מזורזות, הן כבר לא מזורזות. הן הופכות למשימות רגילות.
גרסה 2.7.0-alpha03
21 באפריל 2021
androidx.work:work-*:2.7.0-alpha03
משוחרר. גרסה 2.7.0-alpha03 מכילה את התחייבויות אלה.
תכונות חדשות
מ-WorkManager
2.6.0-alpha02
: מוסיף תמיכה לעובדים שיכולים לפעול בכל תהליך. (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 מכילה את התחייבויות אלה.
תיקוני באגים
- כדי לתקן קריסה שמטורגטת ל-Android 12, צריך להגדיר את יכולת ההשתנות של
PendingIntent
מפורשת. (b/180884673)
גרסה 2.7.0-alpha01
18 בפברואר 2021
androidx.work:work-*:2.7.0-alpha01
משוחרר. גרסה 2.7.0-alpha01 מכילה את התחייבויות אלה.
תכונות חדשות
שירות WorkManager משיק ממשק API חדש של
WorkRequest.Builder.setExpedited(...)
שמביא בחשבון את ההגבלות על השירות שפועל בחזית ב-Android 12.אין יותר אפשרות להפעיל אפליקציות בשירות שפועל בחזית כשהן פועלות ברקע. לכן, כדי לתמוך טוב יותר בעבודות ממושכות, שבעבר היו קשורות למחזור החיים של שירות שפועל בחזית, אפליקציות יכולות לסמן מעבדות
WorkRequest
כמואצות.ה-API הזה מחליף את ממשקי ה-API של
setForegroundAsync(...)
אוsetForeground(...)
שהוצאו משימוש.כשמשתמשים ב-
setExpedited(...)
, WorkManager גם מקצה משימות מזורזות ב-JobScheduler
החל מ-Android 12, ובמקביל מספק תאימות לאחור בגרסאות קודמות של Android על ידי הענקת גישה לשירותים שפועלים בחזית.
שינויים ב-API
- הוספת תמיכה למעבדי
WorkRequest
מזורזים.
גרסה 2.6.0
גרסה 2.6.0
1 בספטמבר 2021
androidx.work:work-*:2.6.0
משוחרר. גרסה 2.6.0 כוללת את ההתחייבויות האלה.
שינויים חשובים מאז 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 מכילה את שמירות האלה.
הגרסה הזו זהה ל-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/1730694RemoteListenableWorker
עכשיו מנתקים בצורה נכונה את הקישור מ-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 מכילה את התחייבויות אלה.
תכונות חדשות
מוסיף תמיכה לעובדים שיכולים לפעול בכל תהליך. (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 מכילה את התחייבויות אלה.
תכונות חדשות
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 שגורם להקפצת של
SecurityException
כשמשתמשים בממשקי API שלAlarmManager
. (aosp/1587518)
גרסה 2.5.0
גרסה 2.5.0
27 בינואר, 2021
androidx.work:work-*:2.5.0
משוחרר. גרסה 2.5.0 כוללת את ההתחייבויות האלה.
שינויים משמעותיים מאז 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
) + משך הזמן של keepProductsForAtLeast. (aosp/1419708)TestListenableWorkerBuilder
תומך עכשיו במחלקה המעודכנת שמרחיבה אתListenableWorker
כדי להקל על הבדיקה. (aosp/1443299, b/169787349)- הכלי לבדיקת WorkManager זמין עכשיו כשמשתמשים ב-Android Studio Arctic Fox.
גרסה 2.5.0-rc01
13 בינואר 2021
androidx.work:work-*:2.5.0-rc01
משוחרר. גרסה 2.5.0-rc01 מכילה את שמירות האלה.
תיקוני באגים
- תוקן באג שגרם לביטול התוקף של
getWorkInfosLiveData
באופן שגוי אחרי שהן עודכנו במהלך השימוש ב-API שמבוסס עלWorkQuery
. (aosp/1540566, b/173769028) - תוקן באג שבמקרים נדירים שבהם טרנזקציות במסד הנתונים לא סומנו כהצלחה. המצב הזה גורם לבעיות במכשירי Motorola מסוימים. (aosp/1535368, b/175944460)
- תוקן באג שגרם להתעלמות מ-
NoSuchElementException
במהלך הניסיון לבטל את הקישור לתהליך מת. (aosp/1530589) - יש לשפר את
ConstraintTrackingWorker
כדי להפסיקListenableWorker
רק אם הוא עדיין לא הופסק. (aosp/1496844, b/172946965) - מעדכנים את ספריות androidx.work כדי לטרגט ל-Java 8 (Ibd2f2)
גרסה 2.5.0-beta02
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) - נוספה דרך לעקוף את באג בפלטפורמה במהלך הפסקת השירות שפועל בחזית בזמן השימוש בממשקי ה-API של
setForeground*
. (b/170924044, aosp/1489901)
גרסה 2.5.0-beta01
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)
גרסה 2.5.0-alpha03
14 באוקטובר 2020
androidx.work:work-*:2.5.0-alpha03
משוחרר. גרסה 2.5.0-alpha03 מכילה את התחייבויות אלה.
שינויים ב-API
TestListenableWorkerBuilder
ו-TestWorkerBuilder
לא משתמשים בסוגים גולמיים. (I883ad, b/169787349)
תיקוני באגים
- יש להשתמש ב-
ApplicationInfo
כדי לקבוע את השם של תהליך ברירת המחדל של האפליקציה. (b/168716641, aosp/1429950) - עליך לתקן את כללי החשיפה של
RemoteWorkManager
ושלRemoteWorkContinuation
. ממשקי ה-API האלה כבר לא מסומנים כ-@Restricted
. (aosp/1432091) - תיקון כללי ההגנה על
:work:work-multiprocess
. (aosp/1432091) - שיפור מחזורי החיים של ההתראות לעבודה ממושכות שמשויכות לשירות שפועל בחזית. (b/168502234, aosp/1431331)
גרסה 2.5.0-alpha02
16 בספטמבר 2020
androidx.work:work-*:2.5.0-alpha02
משוחרר. גרסה 2.5.0-alpha02 מכילה את התחייבויות אלה.
תכונות חדשות
- כדי שתהיה לך אפשרות להשתמש בפונקציות
id
כדי להריץ שאילתותWorkInfo
, צריך להוסיף API ל-WorkQuery. (aosp/1412372, b/157335295) - ב-WorkManager יש תמיכה טובה יותר באפליקציות שמשתמשות בתהליכים מרובים עם ארטיפקט חדש (
androidx.work:work-multiprocess:*
). פריט המידע החדש הזה שנוצר בתהליך הפיתוח (Artifact) עוזר לפתור מספר בעיות באפליקציות גדולות, כולל:- בדרך כלל, צריך לאתחל את 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
מועברות לתהליך של אפליקציהprimary
באמצעות AIDL ומחזירותListenableFuture
באופן שוטף. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- בדרך כלל, צריך לאתחל את WorkManager בכל תהליך של אפליקציה. זה לא טוב כי יש תחרות מוגדלת של SQLite שגורמת לבעיות אחרות. ב-WorkManager יש עכשיו ממשקי API חדשים שיכולים לשמש להגדרת תהליך אפליקציה ראשי באמצעות
שינויים ב-API
- מעכשיו, ב-WorkManager, מתבצע הסרה אגרסיבית יותר של סימוני
WorkRequest
שהושלמו ללא יחסי תלות חלקיים. משך הזמן של מאגר הנתונים הזמני השתנה מ-7
ימים ליום אחד (1
). (aosp/1419708)
תיקוני באגים
- עכשיו, ב-WorkManager מתאים משימות באופן יזום, כך שמשימות
WorkRequest
ו-JobScheduler
מסונכרנות עם האתחול שלWorkManager
. (aosp/1412794, b/166292069)
גרסה 2.5.0-alpha01
19 באוגוסט 2020
androidx.work:work-*:2.5.0-alpha01
משוחרר. גרסה 2.5.0-alpha01 מכילה את התחייבויות אלה.
תכונות חדשות
- שינויים בממשקי API פנימיים שיאפשרו לנו לשפר את הכלים של
WorkManager
בעתיד. כדאי לעקוב אחר עדכונים נוספים.
תיקוני באגים
- צריך לטפל ב-
SecurityException
כשעוקבים אחרי מצב הרשת במכשירים מסוימים. (aosp/1396969)
תרומה חיצונית
- תיקון התיעוד של
ArrayCreatingInputMerger
מאת Zac Sweers (github/43).
גרסה 2.4.0
גרסה 2.4.0
22 ביולי 2020
androidx.work:work-*:2.4.0
משוחרר. גרסה 2.4.0 כוללת את ההתחייבויות האלה.
שינויים משמעותיים מאז 2.3.0
- עכשיו יש לו יכולות מתקדמות יותר לתזמון הצגת מודעות שנמצאות בתהליך עיבוד של
WorkManager
. בעבר, התהליךScheduler
שנמצא בתהליך היה מתייחס רק לביצוע עבודות שלא התעכבו ושהמגבלות שמולאו. בשלב הזה, מתזמנים בתהליך מעקב אחרי פונקציותWorkRequest
שעשויות להתבצע בעתיד, כולל PeriodicWorkRequests. גם ב-Scheduler
בתוך התהליך לא חלות מגבלות תזמון (אבל עדיין הוא מוגבל לגודל ה-Executor
שמשמש את WorkManager). פירוש הדבר הוא שהאפליקציה יכולה עכשיו להפעיל הרבה יותר בקשות WorkRequest כאשר היא פועלת בחזית. כדי לנהל ביצוע של עבודה מאוחרת בחזית,WorkManager
כולל גם גרסה חדשה שלRunnableScheduler
שאפשר להגדיר. (aosp/1185778) - WorkManager תומך עכשיו ב-RxJava 3. כדי להשתמש ב-RxJava 3, צריך לכלול את התלות הבאה:
implementation "androidx.work:work-rxjava3:2.4.0"
. (aosp/1277904) - נוספה האפשרות לשלוח שאילתות לגבי
WorkInfo
באמצעותWorkQuery
. האפשרות הזו שימושית כשמפתחים רוצים לשלוח שאילתות לגבי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
בהתאמה אישית כדי לעקוב אחר בקשות WorkRequest שצריכות להתבצע בעתיד. הוא משמש את המתזמן שבתהליך. (aosp/1203944)הוספת תמיכה להוספה דינמית של מפעלים להענקת גישה, בעת שימוש ב-
DelegatingWorkerFactory
. (b/156289105, aosp/1309745)צריך להתאים יותר את המעקב אחרי המגבלות של
BATTERY_NOT_LOW
לפלטפורמה. (aosp/1312583)עכשיו, המתזמנים בתוך התהליך משתמשים בממשקי API טובים יותר כדי לקבוע את שם התהליך. האפשרות הזו שימושית כדי לספק תמיכה טובה יותר באפליקציות שמשתמשות בתהליכים מרובים. (aosp/1324732)
כללים חדשים לאיתור שגיאות בקוד (lint) שאוכפים:
- שימוש ב
foregroundServiceType
הנכון בזמן שימוש בממשקי API שלsetForegroundAsync()
. (b/147873061, aosp/1215915) - ציון מזהים של JobScheduler שבהם צריך להשתמש ב-WorkManager כשמשתמשים ישירות בממשקי API של JobService. aosp/1223567
- נוסף כלל חדש של איתור שגיאות בקוד שמבטיח שעכשיו
ListenableWorker
ההטמעות הןpublic
כשמשתמשים בברירת המחדלWorkerFactory
. (aosp/1291262)
- שימוש ב
שיחות אל
setForegroundAsync()
שלא הסתיימו לפני ההשלמה שלListenableWorker
יסומנו מעכשיו באמצעותIllegalStateException
בListenableFuture
שהוחזר. (aosp/1262743)תיקון באג שגרם לכך ש-
ForegroundService
לא נעצר אחרי הפרעה שלWorker
בחזית. (b/155579898, aosp/1302153)תיקון באג שבו
WorkManager
מנסה להפעיל מספר מופעים שלWorker
שמקושר לשירות שפועל בחזית (b/156310133, aosp/1309853)
גרסה 2.4.0-rc01
24 ביוני 2020
androidx.work:work-*:2.4.0-rc01
משוחרר. גרסה 2.4.0-rc01 מכילה את ההתחייבויות האלה.
תיקוני באגים
- עכשיו, במתזמן הפעולות בתהליך המערכת משתמשת בממשקי API טובים יותר כדי לקבוע את שם התהליך. האפשרות הזו שימושית כדי לספק תמיכה טובה יותר באפליקציות שמשתמשות בתהליכים מרובים. (aosp/1324732)
גרסה 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
ו-androidx.work:work-testing:2.4.0-beta01
. גרסה 2.4.0-beta01 מכילה את התחייבויות אלה.
תיקוני באגים
- תיקון באג שגרם לכך ש-
ForegroundService
לא נעצר אחרי הפרעה שלWorker
בחזית. (b/155579898, aosp/1302153) - תיקון באג שבו
WorkManager
מנסה להפעיל מספר מופעים שלWorker
שמקושר לשירות שפועל בחזית (b/156310133, aosp/1309853) - הוספת תמיכה להוספה דינמית של מפעלים להענקת גישה, בעת שימוש ב-
DelegatingWorkerFactory
. (b/156289105, aosp/1309745) - צריך להתאים יותר את המעקב אחרי המגבלות של
BATTERY_NOT_LOW
לפלטפורמה. (aosp/1312583)
גרסה 2.4.0-alpha03
29 באפריל 2020
androidx.work:work-*: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
ההטמעות הןpublic
כשמשתמשים בברירת המחדלWorkerFactory
. (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)
גרסה 2.4.0-alpha02
1 באפריל, 2020
androidx.work:work-*:2.4.0-alpha02
משוחרר. גרסה 2.4.0-alpha02 מכילה את התחייבויות אלה.
תכונות חדשות
- נוסף כלל חדש של איתור שגיאות בקוד (lint), עם אזהרה כשמחייבים גם
Constraints.setRequiresCharging(...)
וגםConstraints.setRequiresDeviceIdle(...)
בפונקציותWorkRequest
. חלק מהמכשירים אף פעם לא נטענים ולא פעילים באותו זמן. לכן, בקשות כאלה יופעלו בתדירות נמוכה מהצפוי. (aosp/1253840)
שינויים ב-API
נוספה האפשרות לשלוח שאילתות לגבי
WorkInfo
באמצעותWorkQuery
. האפשרות הזו שימושית כשמפתחים רוצים לשלוח שאילתות לגבי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)
גרסה 2.4.0-alpha01
4 במרץ, 2020
androidx.work:work-*:2.4.0-alpha01
משוחרר. גרסה 2.4.0-alpha01 מכילה את התחייבויות אלה.
תכונות חדשות
עכשיו יש לו יכולות מתקדמות יותר לתזמון הצגת מודעות שנמצאות בתהליך עיבוד של
WorkManager
. בעבר, המתזמן שבתהליך היה מתייחס רק לביצוע עבודות שלא התעכבו ושהאילוצים שלהן מולאו. בשלב הזה, המתזמנים בתהליך מעקב אחרי פונקציותWorkRequest
שעשויות להתבצע בעתיד, כוללPeriodicWorkRequest
. גם כלי התזמון בתוך התהליך לא מפקח על מגבלות התזמון (אבל הוא עדיין מוגבל לגודלExecutor
שמשמש את WorkManager). פירוש הדבר הוא שהאפליקציה יכולה עכשיו להריץ הרבה יותר הפעלותWorkRequest
כשהאפליקציה פועלת בחזית. (aosp/1185778)נוספה האפשרות לבקש נתוני אבחון מ-WorkManager באמצעות
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
. הקישור מספק מידע שימושי, כולל:- בקשות עבודה שהושלמו ב-24 השעות האחרונות.
- בקשות עבודה שנמצאות כרגע בהרצה.
- בקשות עבודה מתוזמנות. (aosp/1235501)
כללים חדשים לאיתור שגיאות בקוד (lint) שאוכפים:
- שימוש ב
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)
גרסה 2.3.4
גרסה 2.3.4
18 במרץ 2020
androidx.work:work-*:2.3.4
משוחרר. גרסה 2.3.4 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תוקן באג שגרם להרצה של כמה מופעים של
Worker
רציפים, אחרי יותר מ-10 דקות של הפעלה. (aosp/1247484, b/150553353) - תיקון לאיתור שגיאות בקוד (lint) של WorkManager
IssueRegistry
. תודה על התרומה שלך לכתובת @ZacSweers מ-Slack. (aosp/1217923)
גרסה 2.3.3
גרסה 2.3.3
4 במרץ, 2020
androidx.work:work-*:2.3.3
משוחרר. גרסה 2.3.3 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תוקן באג שגרם להפרעה ב
Worker
, שלא תתוזמן מחדש כמו שצריך. (b/150325687, aosp/1246571)
גרסה 2.3.2
גרסה 2.3.2
19 בפברואר 2020
androidx.work:work-*:2.3.2
משוחררים. גרסה 2.3.2 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תיקון בעיה שבה WorkManager חורג ממגבלת 100 המשימות ב-JobScheduler במקרים נדירים. (aosp/1226859, b/149092520)
- תיקון למרוץ תהליכים ב-ConstraintController. (aosp/1220100)
- שיפרנו את מחזור החיים של השירות שפועל בחזית לניהול עבור Workers שפעילים לאורך זמן. (aosp/1226295)
- שיפרנו את הניהול של ביטול התראות במקרה של ביטולי עובדים שעובדים עם מערכת ניהול זמן ממושך. (aosp/1228346)
גרסה 2.3.1
גרסה 2.3.1
5 בפברואר 2020
androidx.work:work-*:2.3.1
משוחרר. גרסה 2.3.1 כוללת את ההתחייבויות האלה.
תיקוני באגים
- ניהול טוב יותר של מחזור החיים של
Notification
למעבדיWorker
שרצים כאשרService
פועל בחזית. (aosp/1218539, b/147249312) WorkManager
תלוי עכשיו ביציבות שלandroidx.sqlite:sqlite-framework:2.1.0
. (aosp/1217729)- נוספו כללי איתור שגיאות בקוד כדי לוודא שצוין
foregroundServiceType
ב-AndroidManifest.xml
כשמשתמשים בפונקציותforegroundServiceType
ב-ForegroundInfo
. (aosp/1214207, b/147873061)
גרסה 2.3.0
גרסה 2.3.0
22 בינואר, 2020
androidx.work:work-*:2.3.0
הושק ללא שינויים מאז 2.3.0-rc01
. גרסה 2.3.0 כוללת את ההתחייבויות האלה.
שינויים חשובים מאז 2.2.0
- תמיכה במשימות ממושכות או חשובות דרך
ListenableWorker#setForegroundAsync()
. - תמיכה בהתקדמות העובד דרך
ListenableWorker#setProgressAsync()
. - WorkManager כולל עכשיו כללים נוספים לאיתור שגיאות בקוד כחלק מהספרייה, שעוזרים לאתר באגים בשלב מוקדם.
גרסה 2.3.0-rc01
8 בינואר, 2020
androidx.work:work-*:2.3.0-rc01
משוחרר. גרסה 2.3.0-rc01 מכילה את ההתחייבויות האלה.
גרסה זו זהה ל-2.3.0-beta02
תיקוני באגים
- בארטיפקט
work-testing
מוגדרת עכשיו תלות שלapi
ב-work-runtime-ktx
. (aosp/1194410)
גרסה 2.3.0-beta02
18 בדצמבר 2019
androidx.work:work-*:2.3.0-beta02
משוחרר. גרסה 2.3.0-beta02 מכילה את התחייבויות אלה.
תכונות חדשות
- נוספה הודעת שגיאה טובה יותר לחריגים של SQLite שלא ניתנים לשחזור. (aosp/1185777)
- נוסף כלל של איתור שגיאות בקוד שמבטיח שספק התוכן
androidx.work.impl.WorkManagerInitializer
יוסר מה-AndroidManifest.xml
במהלך שימוש באתחול על פי דרישה. (aosp/1167007) - נוספה אזהרה על איתור שגיאות בקוד כאשר המדיניות
enqueue()
משמשת לפונקציהPeriodicWorkRequest
במקוםenqueueUniquePeriodicWork()
. (aosp/1166032)
שינויים ב-API
ForegroundInfo
עכשיו מחייב לציין אתnotificationId
שבו יש להשתמש בעת השימוש ב-ListenableWorker.setForegroundAsync()
. זהו שינוי תוכנה שעלול לגרום לכשלים. כך אפשר להריץ כמה שניותWorker
במקביל.WorkManager
גם מנהלת טוב יותר את משך החיים שלNotification
שסופקו. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
תיקוני באגים
- תוקן באג בהטמעה של AlertManager שבו ההתראות לא נוקו כראוי. (aosp/1156444)
- תוקן באג שגרם לבנייה של שרשרת
WorkContinuation
ריקה עם רשימה ריקה של פרמטרים מסוגWorkRequest
. (b/142835274, aosp/1157051)
שינויים בתלות
- ב-WorkManager משתמש עכשיו בחדר 2.2.2.
גרסה 2.3.0-beta01
20 בנובמבר 2019
androidx.work:work-*:2.3.0-beta01
משוחרר. גרסה 2.3.0-beta01 מכילה את התחייבויות אלה.
תכונות חדשות
- נוסף כלל חדש של איתור שגיאות בקוד שמונע שגיאות למפתחים עקב הטמעה שגויה של
androidx.work.Configuration.Provider
במהלך שימוש באתחול על פי דרישה. aosp/1164559
גרסה 2.3.0-alpha03
23 באוקטובר 2019
androidx.work:work-*:2.3.0-alpha03
משוחרר. גרסה 2.3.0-alpha03 מכילה את התחייבויות אלה.
תכונות חדשות
- נוסף API של
WorkManager.createCancelPendingIntent()
שמאפשר לבטל בקלותWorkRequest
בלי לרשום רכיב נוסף ב-AndroidManifest.xml
. ה-API הזה מקל במיוחד על הביטול שלWorkRequest
מ-Notification
s. אנחנו צופים שהוא יותאם לממשקי ה-API החדשים בחזית בגרסה 2.3.0. - Work Manager תלוי עכשיו בגרסה היציבה של
androidx.room:*:2.2.0
.
שינויים ב-API
- השם
ForegroundInfo.getNotificationType()
השתנה ל-ForegroundInfo.getForegroundServiceType()
כדי שיהיה תואם יותר לממשקי ה-API של הפלטפורמה הבסיסית. (b/142729893, aosp/1143316)
תיקוני באגים
- תוקן באג שנגרם עקב קריאה מיותרת אל
setTransactionSuccessful()
שלא במסגרת עסקה. המצב הזה קורה במקרים של העברות נדירות. (b/142580433, aosp/1141737)
גרסה 2.3.0-alpha02
9 באוקטובר 2019
androidx.work:work-*:2.3.0-alpha02
משוחרר. גרסה 2.3.0-alpha02 מכילה את התחייבויות אלה.
תכונות חדשות
- ב-WorkManager תומך עכשיו בהרצה ארוכה של עבודה או בעבודה חשובה, שמערכת ההפעלה צריכה להמשיך לפעול. למידע נוסף, אפשר להיכנס לאתר
ListenableWorker#setForegroundAsync()
(אוCoroutineWorker#setForeground()
ל-Kotlin). (aosp/1133636)
שינויים ב-API
- השם של ה-API
containsKey
ב-Data
השתנה ל-hasKeyWithValueOfType
. גם שיטת התוסף המתאימה בספרייהktx
שונתה. (b/141916545)
תיקוני באגים
- לוחות הזמנים של WorkManager פועלים בצורה הוגנת כשמגבלות התזמון של מספר ה
WorkRequest
s הצפויות מתקרבות. (aosp/1105766) - WorkManager שולח קריאה אל
ListenableWorker#onStopped()
רק אם העבודה עדיין לא הושלמה. (b/140055777) - עכשיו WorkManager מסיר מידע על התקדמות התהליך של הפרעה לעובד או כשהוא מגיע למצב סופי. (aosp/1114572)
- עכשיו יש ב-
Data
מצגtoString()
שימושי הרבה יותר. (b/140945323) - עכשיו יש ל-
Data
שיטתequals()
טובה יותר. הוא תומך גם ב-deepEquals
עבורArray
סוגים. (b/140922528) - כיום WorkManager מאחסן את מסד הנתונים הפנימי ואת קובצי ההעדפות שלו בספריית גיבוי. (b/114808216)
גרסה 2.3.0-alpha01
22 באוגוסט 2019
androidx.work:work-*:2.3.September 5, 20190-alpha01
משוחרר. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תכונות חדשות
- עכשיו יש ל-
ListenableWorker
אפשרות להגדיר התקדמות באמצעות ה-API שלsetProgressAsync()
. נוסף גם ממשק API תואם שלsetProgress
עםsuspend
ב-CoroutineWorker
ו-setProgress
ב-RxWorker
שמחזירSingle<Void>
. עם ממשקי ה-API החדשים האלה, Workers יכולים להעביר מידע על התקדמות התהליך דרךWorkInfo
שיש לו ממשק API תואםgetProgress
. (b/79481554) - ל-
Data
יש API מסוגcontainsKey()
שיכול לשמש לאימות של נתוני הקלט ל-Worker
יש מפתחות עם הסוג הנדרש. (b/117136838) - עכשיו אפשר לבצע סריאליזציה של
Data
באמצעותData.toByteArray()
ו-Data.fromByteArray()
. חשוב לשים לב שאין אחריות לגבי ניהול גרסאות ב-Data
, לכן לא כדאי לשמור אותו או להשתמש בו עבור IPC בין אפליקציות. בטוח להשתמש בהם רק במספר תהליכים של אותה אפליקציה. - נוספה האפשרות לציין
InputMergerFactory
באמצעותConfiguration.setInputMergerFactory
. (b/133273159)
שינויים ב-API
- WorkManager יקפיץ מופע של
IllegalStateException
אםWorkerFactory
יחזיר מופע שלListenableWorker
שהופעל בעבר. (b/139554406) - עדכונים במסמכים לגבי הביטול של
ListenableFuture
וההתקשרות החוזרת אלonStopped()
בListenableWorker
. (b/138413671)
תיקוני באגים
- כלי התזמון בתוך התהליך מתעלם עכשיו מפריטי
WorkRequest
עם האילוץidle
. הבקשות האלה ייאספו עכשיו על ידיJobScheduler
רק כשהמכשירidle
הוא בפועל. (aosp/1089779) TestScheduler
משתמש עכשיו בצורה נכונה ב-Executor
שצוין עבור מבצע המשימות הפנימי שלו בבדיקות. (aosp/1090749)
גרסה 2.2.0
גרסה 2.2.0
15 באוגוסט 2019
androidx.work:work-*: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 Services זמין לרמות API <= 22. זוהי תלות אופציונלית שעוזרת לעבד רקע מהימן וביצועים טובים יותר בגרסאות API ישנות יותר. אם באפליקציה נעשה שימוש ב-Google Play Services, צריך להוסיף את התלות הזו לקובץ השדרוג כדי לקבל באופן אוטומטי תמיכה ב-GCMNetworkManager. אם Play Services לא תהיה זמינה, WorkManager ימשיך לחזור אל AlertManager במכשירים ישנים.
גרסה 2.2.0-rc01
30 ביולי 2019
androidx.work:work-*:2.2.0-rc01
משוחרר. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תיקוני באגים
- תוקן באג בהטמעה של AlertManager שגורם לכיבוי השירות מוקדם מדי. המצב הזה גורם ל
RejectedExecutionException
במקרים נדירים. (aosp/1092374) (b/138238197). - נוספה פתרון עקיף ל
NullPointerException
כשמשתמשים בממשקי API שלJobScheduler
במכשירים מסוימים. (aosp/1091020) (b/138364061), (b/138441699)
גרסה 2.2.0-beta02
19 ביולי 2019
androidx.work:work-*:2.2.0-beta02
משוחרר. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תיקוני באגים
- הוסרה תלות לא מכוונת של Jacoco שבוצעה ב-
2.2.0-beta01
.
גרסה 2.2.0-beta01
17 ביולי 2019
androidx.work:work-*:2.2.0-beta01
משוחרר. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תכונות חדשות
androidx.work:work-gcm:2.2.0-beta01
הוא ארטיפקט חדש של Maven שתומך בשימוש ב-GCMNetworkManager כמתזמן כש-Google Play Services זמין לרמות API <= 22. זוהי תלות אופציונלית שעוזרת לעבד רקע מהימן וביצועים טובים יותר בגרסאות API ישנות יותר. אם באפליקציה נעשה שימוש ב-Google Play Services, צריך להוסיף את התלות הזו לקובץ השדרוג כדי לקבל באופן אוטומטי תמיכה ב-GCMNetworkManager. אם Play Services לא תהיה זמינה, WorkManager ימשיך לחזור אל AlertManager במכשירים ישנים.
תיקוני באגים
- צריך לתקן את השגיאה
IllegalArgumentException
כשעוקבים אחרי מצב הרשת בטאבלטים של Nvidia Shield K1. (aosp/1010188)
גרסה 2.1.0
גרסה 2.1.0
11 ביולי 2019
androidx.work:work-*:2.1.0
משוחרר. גרסה זו זהה ל-androidx.work:work-*:2.1.0-rc01
.
שינויים חשובים מאז 2.0.1
- ב-
work-runtime-ktx
נדרשת עכשיו Java 8. אם נתקלת בבעיות, אפשר להוסיף את הפריטים הבאים אלbuild.gradle
:kotlinOptions { jvmTarget = "1.8" }
- נוסף אתחול לפי דרישה עבור WorkManager, שייצור את WorkManager
רק כשיש הפניה אליו. b/127497100 כדי להגדיר את הפרויקט לאתחול על פי דרישה:
- משביתים את האתחול האוטומטי.
- מטמיעים את
Configuration.Provider
באובייקטApplication
בהתאמה אישית. - שנה את כל ההפניות של
WorkManager.getInstance()
ל-WorkManager.getInstance(Context)
. כחלק מהשינוי הזה,WorkManager.getInstance()
הוצא משימוש. תמיד בטוח יותר להתקשר החלפה שלWorkManager.getInstance(Context)
, גם אם לא עושים זאת אתחול לפי דרישה.
- מכשירי
PeriodicWorkRequest
תומכים עכשיו בעיכובים ראשוניים. אפשר להשתמש methodsetInitialDelay
ב-PeriodicWorkRequest.Builder
כדי להגדיר פקודה ראשונית עיכוב. b/111404867 - נוספה האפשרות להעניק גישה למשתמש
WorkerFactory
רשום אחד או יותר באמצעותDelegatingWorkerFactory
. b/131435993 - נוספה האפשרות להתאים אישית את
Executor
שמשמש את WorkManager עבור את כל הנהלת החשבונות הפנימית שלו דרךConfiguration.Builder.setTaskExecutor
. - נוספה היכולת ליצור
Worker
ו-ListenableWorker
שניתן לבדוק את היחידה באמצעותTestWorkerBuilder
ו-TestListenableWorkerBuilder
פריט מידע שנוצר בתהליך הפיתוח (Artifact)work-testing
.- שימו לב ש-
work-testing
עכשיו מושך את Kotlin כתלות כולל כמה תוספי Kotlin כברירת מחדל.
- שימו לב ש-
- הספירה של ניסיונות הריצה נוספה ל-
WorkInfo
. b/127290461 - עכשיו סוגי
Data
יכולים לאחסן ולאחזר בייטים ומערכי בייטים. זה לא שינוי הגודל המקסימלי שלData
אובייקטים. - שירות Work Manager תלוי עכשיו בשירות
Room 2.1.0
, שאמור לפתור כמה בעיות במסד הנתונים.
גרסה 2.1.0-rc01
27 ביוני 2019
androidx.work:work-*:2.1.0-rc01
משוחרר. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תיקוני באגים
- תוקן באג שגורם לאפליקציה לקרוס במהלך ביצוע משימות באמצעות
JobScheduler
בזמן שמתבצע גיבוי b/135858602.
גרסה 2.1.0-beta02
20 ביוני 2019
androidx.work:work-*:2.1.0-beta02
משוחרר. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תיקוני באגים
- עכשיו
TestListenableWorkerBuilder
משתמש ב-WorkerFactory
הנכון כשיוצרים מופעים שלListenableWorker
. b/135275844 - תוקן באג שגרם לשיבושים בחלונות הביצוע של
WorkRequest
שניות בגלל מוות של תהליך. b/135272196
גרסה 2.1.0-beta01
13 ביוני 2019
androidx.work:work-*:2.1.0-beta01
משוחרר. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תיקוני באגים
- שירות Work Manager תלוי עכשיו בשירות
Room 2.1.0
, שאמור לפתור כמה בעיות במסד הנתונים. - הקלט/פלט מדיסק האתחול הוסר מה-thread הראשי.
- תוקן קיפאון פוטנציאלי במעקב אחר אילוצים. b/134361006
- משימות לא חוקיות שמשויכות ל-WorkManager בוטלו מראש. b/134058261
- נוספו כמה קריאות הגנה לממשקי JobScheduler API למכשירים לא תקינים.
גרסה 2.1.0-alpha03
5 ביוני 2019
androidx.work:*:2.1.0-alpha03
משוחרר.
תיקוני באגים
- תיעוד משופר של
PeriodicWorkRequest
. - עכשיו
WorkManagerTestInitHelper
משתמש במנהל הרקע הנכון לבדיקות. - תיקונים לבעיות SQLite כאשר מטפלים בטרנזקציות גדולות במכשירים מסוימים. (b/130182503)
- עכשיו יחסי התלות של WorkManager מפורטים יותר. b/133169148).
- פתרון באגים ספציפיים ל-OEM (יצרן הציוד המקורי) בהטמעה של
JobScheduler
בזמן תזמון משימות באמצעות WorkManager. - שיפורים בתזמון שמבוסס על AlertManager סביב משך החיים של השירות, שגרמו בעבר לקריסות נדירות. (b/133313734)
גרסה 2.1.0-alpha02
16 במאי 2019
גרסת WorkManager 2.1.0-alpha02 הושקה. הגרסה הזו כוללת מספר ממשקי API חדשים.
שינויים ב-API
מכשירי
PeriodicWorkRequest
תומכים עכשיו בעיכובים ראשוניים. אפשר להשתמש methodsetInitialDelay
ב-PeriodicWorkRequest.Builder
כדי להגדיר פקודה ראשונית עיכוב. b/111404867נוספה האפשרות להעניק גישה למשתמש
WorkerFactory
רשום אחד או יותר באמצעותDelegatingWorkerFactory
. b/131435993נוספה האפשרות להתאים אישית את
Executor
שמשמש את WorkManager עבור את כל הנהלת החשבונות הפנימית שלו דרךConfiguration.Builder.setTaskExecutor
.תיעוד משופר בנושא
WorkRequest.keepResultsForAtLeast
(b/130638001), אתחול לפי דרישה ו-PeriodicWorkRequest.Builder
(b/131711394).
גרסה 2.1.0-alpha01
24 באפריל 2019
גרסת WorkManager 2.1.0-alpha01 זמינה. הגרסה הזו כוללת מספר ממשקי API חדשים. לתשומת ליבך, החל מהגרסה הזו, יהיו תכונות חדשות לא יועברו לגרסת 1.x. מומלץ לעבור אל 2.x.
שינויים ב-API
- נוסף אתחול לפי דרישה עבור WorkManager, שייצור את WorkManager
רק כשיש הפניה אליו. b/127497100 כדי להגדיר את הפרויקט לאתחול על פי דרישה:
- משביתים את האתחול האוטומטי.
- מטמיעים את
Configuration.Provider
באובייקטApplication
בהתאמה אישית. - שנה את כל ההפניות של
WorkManager.getInstance()
ל-WorkManager.getInstance(Context)
. כחלק מהשינוי הזה,WorkManager.getInstance()
הוצא משימוש. תמיד בטוח יותר להתקשר החלפה שלWorkManager.getInstance(Context)
, גם אם לא עושים זאת אתחול לפי דרישה.
- נוספה היכולת ליצור
Worker
ו-ListenableWorker
שניתן לבדוק את היחידה באמצעותTestWorkerBuilder
ו-TestListenableWorkerBuilder
פריט מידע שנוצר בתהליך הפיתוח (Artifact)work-testing
.- שימו לב ש-
work-testing
עכשיו מושך את Kotlin כתלות, אבל גם כולל כמה תוספי Kotlin כברירת מחדל.
- שימו לב ש-
- הספירה של ניסיונות הריצה נוספה ל-
WorkInfo
. b/127290461 - עכשיו סוגי
Data
יכולים לאחסן ולאחזר בייטים ומערכי בייטים. זה לא שינוי הגודל המקסימלי שלData
אובייקטים. - הוצא משימוש
CoroutineWorker.coroutineContext
. השדה הזה היה שגוי הקלדתCoroutineDispatcher
; שלא תצטרכו יותר, תוכלו לעבור את ה-coroutineContext הרצוי בגוף הפונקציה המושעית. RxWorker.createWork()
ו-RxWorker.getBackgroundScheduler()
עכשיו עם@NonNull
סוגי החזרה.
גרסה 2.0.1
גרסה 2.0.1
9 באפריל 2019
ההשקה של WorkManager 2.0.1. גרסה זו זהה ל- 2.0.1-rc01.
גרסה 2.0.1-rc01
3 באפריל 2019
ההשקה של WorkManager 2.0.1-rc01. הגרסה הזו כוללת כמה תיקוני באגים. עבור משתמשים מדור קודם ב- 1.x, חלק מהשינויים האלה יופיעו גם 1.0.1-rc01.
תיקוני באגים
- בדיקות Robolectric פועלות עכשיו בצורה תקינה עם WorkManager. b/122553577
- תוקנה קריסת תרחיש קצה שבה לא בוצע ניקוי של מעקב האילוצים ממשקי API טרום-JobScheduler. b/129226383
- תוקן
StackOverflowError
שטיפל בשרשראות ארוכות של עבודה. b/129091233 - תיעוד מעודכן ל-
PeriodicWorkRequest
שניות כדי לציין שהזמן הגמיש אין תמיכה ב-API 23. - תוקנו כמה קישורים מנותקים במסמכי התיעוד של Kotlin.
גרסה 2.0.0
גרסה 2.0.0
20 במרץ 2019
גרסת WorkManager 2.0.0 זמינה. גרסה זו זהה ל-2.0.0-rc01 והיא גרסה של AndroidX בגרסה 1.0.0 יציבה עם יחסי תלות של AndroidX. ההמלצות שלנו שמטרגטת את הגרסה הזו במקום את הגרסאות הקודמות של 1.x. כל הפעילות יטרגט 2.x ו- 1.x יקבל תיקוני באגים קריטיים בלבד לזמן מוגבל.
גרסה 2.0.0-rc01
7 במרץ 2019
ההשקה של WorkManager 2.0.0-rc01. הגרסה הזו זהה לגרסה היציבה 1.0.0 אבל יש לו יחסי תלות של AndroidX. ברגע שהיא תגיע ליציבות של 2.0.0, כלול את הגרסה הזו, וגרסאות 1.x מדור קודם יקבלו רק תיקוני באגים. כל פיתוח פעיל יטרגט פי 2.x.
יחסי תלות לפני AndroidX
מסמכי עזר: 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" }
Kotlin
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 זמינה. גרסה זו זהה ל- 1.0.1-rc01.
לתשומת ליבך, אנחנו ממליצים מאוד למשתמשים לעדכן ל-WorkManager 2.x, בהמשך יהיו מעט מאוד עדכונים להסתעפות של 1.x. ממשקי API חדשים גם לא תושק בספרייה 1.x.
גרסה 1.0.1-rc01
2 באפריל 2019
ההשקה של WorkManager 1.0.1-rc01. הגרסה הזו כוללת כמה תיקוני באגים.
תיקוני באגים
- בדיקות Robolectric פועלות עכשיו בצורה תקינה עם WorkManager. b/122553577
- תוקנה קריסת תרחיש קצה שבה לא בוצע ניקוי של מעקב המגבלות ממשקי API טרום-JobScheduler. b/129226383
- תוקן
StackOverflowError
שטיפל בשרשראות ארוכות של עבודה. b/129091233
גרסה 1.0.0
גרסה 1.0.0
5 במרץ 2019
זוהי הגרסה היציבה 1.0.0 של WorkManager. הגרסה הנוכחית של WorkManager זהה ל-1.0.0-rc02.
גרסה 1.0.0-rc02
21 בפברואר 2019
זוהי הגרסה היציבה השנייה לגרסה 1.0.0 של WorkManager. הגרסה הזו כוללת שני תיקוני באגים.
תיקוני באגים
עכשיו יש תזמון נכון של
Worker
אחרי קריסה של אפליקציה. b/124546316פעולות מסוג
Worker
שגורמות לערךException
לא מסומן מסומנות עכשיו בצורה נכונה בתורFAILED
ולא לקרוס יותר את תהליך האפליקציה.
גרסה 1.0.0-rc01
14 בפברואר 2019
זוהי גרסה יציבה לגרסה 1.0.0 של WorkManager. הגרסה הזו כוללת תיקון באג אחד.
תיקוני באגים
- ההטמעה שמבוססת על AlertManager פועלת עכשיו בצורה תקינה עבור
flex
חלונות עבור PeriodicWorkRequests. b/124274584
גרסה 1.0.0-beta05
6 בפברואר 2019
הגרסה הזו כוללת כמה תיקוני באגים.
תיקוני באגים
- תוקן מקרה שבו נעשה שימוש ב-
JobScheduler.getPendingJob(...)
ב-API 23. b/123893059 - תוקן
NullPointerException
במכשירים שפועלת בהם גרסת Android 5.1 (רמת API 22) או פחות. b/123835104
גרסה 1.0.0-beta04
4 בפברואר 2019
הגרסה הזו כוללת כמה תיקוני באגים.
תיקוני באגים
- תזמון משופר של PeriodicWork להטמעה המבוססת על AlertManager.
- תוקן מקרה שבו WorkManager לא הצליח לעקוב בצורה נכונה אחרי מגבלות כאשר באמצעות יישום שמבוסס על AlertManager. b/123379508
- תוקנה מקרה שבו WorkManager נכשל בניסיון חוזר של עבודה במקרה של מוות של תהליך כאשר באמצעות יישום שמבוסס על AlertManager. b/123329850
- תוקן מקרה שגרם ל-WorkManager להדליף Wakelocks במהלך השימוש הטמעה מבוססת AlertManager.
גרסה 1.0.0-beta03
25 בינואר 2019
הגרסה הזו כוללת כמה תיקוני באגים.
תיקוני באגים
- הוספנו רגרסיה
1.0.0-beta02
שגרמה לאי-ביצוע העבודה בצורה נכונה במצבים מסוימים. b/123211993 - תוקן מקרה שבו העבודה לא עמדה כראוי בתזמון ההשהיה לפני ניסיון חוזר. b/122881597
- בוצע תיקון
ConcurrentModificationException
במכשירים שפועלת בהם גרסת Android 5.1 (API או) או פחות. זהו המשך התיקון של1.0.0-beta02
. b/121345393 - הוספנו את
exported=false
לחלק מהרכיבים במניפסט שהיו חסרים בהערה הזו. - מידע כלול על האינטראקציה של WorkManager עם מערכת ההפעלה ב תיעוד ברמת החבילה.
גרסה 1.0.0-beta02
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
שמשמשים את WorkManager. - הועבר לשימוש בתלות של
Room
1.1.1
במקום ב-1.1.1-rc01
; האלה הגרסאות זהות. b/122578011
גרסה 1.0.0-beta01
19 בדצמבר 2018
הגרסה הזו לא מכילה שינויים ב-API. בהמשך, פלטפורמת WorkManager צפויה לשמור על יציבות API עד לגרסה הבאה, אלא אם תהיה בעיה קריטית. הגרסה הזו כוללת כמה תיקוני באגים.
תיקוני באגים
- צאצאים של עבודות הורים שבוטלו בעבר ואושרו, לא יפעלו יותר. b/120811767
- סוגי רישום ביומן שאותחלו בצורה נכונה (מופיעים בעיקר במהלך בדיקות).
גרסה 1.0.0-alpha13
12 בדצמבר 2018
הגרסה הזו כוללת שינוי קטן ב-API שעשוי לעזור לחלק ממשתמשי Kotlin.
שינויים ב-API
androidx.work.Result
הועבר להיות בכיתה פנימית שלListenableWorker
. כך אפשר למנוע התנגשויות בלו"ז עם הכיתהResult
ברמה העליונה של Kotlin. זהו שינוי תוכנה שעלול לגרום לכשלים ב-API. b/120564418
הפרות שינויים ב-API
androidx.work.Result
הועבר להיות בכיתה פנימית שלListenableWorker
.
גרסה 1.0.0-alpha12
5 בדצמבר 2018
הגרסה הזו כוללת מספר שינויים שעלולים לגרום לכשל ב-API. יש לעיין בקטע Breaking API Changes (שינויים ב-API) שבהמשך. סביר להניח שהגרסה הזו תושק כגרסת הבטא הראשונה שלנו. alpha12
כולל גם עדכוני מסמכים מקיפים.
שינויים ב-API
- פריט מידע שנוצר בתהליך פיתוח (Artifact) חדש,
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()
. התוצאות שלListenableFuture
שלך עכשיו הןResult
במקוםPayload
. לפונקציותWorker
אין שיטות getter ו-setter לפלטData
. זהו שינוי תוכנה שעלול לגרום לכשלים. - נוספו וריאנטים של
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
ו-Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
כדי לתמוך טוב יותר במזהי URI של תוכן עם טריגרים איטיים. b/119919774 - נוסף וריאנט אחד (
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
). ל-method הזה נדרש API 26. - נוספו שיטות תוסף
Operation.await()
ו-ListenableFuture.await()
של Kotlin. - השם של
Operation.getException()
השתנה. השם החדש הואOperation.getThrowable()
. זהו שינוי תוכנה שעלול לגרום לכשלים. - המחלקה והשיטות של
ContentUriTriggers
שמפנים אליה כבר לא זמינות לשימוש באופן ציבורי. זהו שינוי תוכנה שעלול לגרום לכשלים. - הסרנו את שאר שיטות ה-Varargs ב-
WorkManager
, ב-WorkContinuation
וב-OneTimeWorkRequest
כדי לייעל את ה-API. כדי לפתור בעיות ב-build, אפשר לכלול את הוריאנטים הקיימים באמצעותArrays.asList(...)
. אנחנו עדיין כוללים גרסאות של ארגומנט יחיד בכל שיטה. זהו שינוי תוכנה שעלול לגרום לכשלים. - הוסרו
WorkContinuation.combine(OneTimeWorkRequest, *)
וריאנטים. הם הציגו API מבלבל; השיטות הקיימות שלcombine
ברורות יותר. זהו שינוי תוכנה שעלול לגרום לכשלים.
תיקוני באגים
- הטמעות טרום-Marshmallow אמינות עכשיו יותר בהתאוששות מתהליך מוות של משימה שכבר בוצעה.
- המעקב אחר
LiveData
כפי שנמדד דרךobserveForever
מתבצע דרך WorkManager. זהו גרסה קודמת של תיקון בספריית החדרים. b/74477406 - הפונקציה
Data.Builder.build()
גורמת עכשיו לחריגה אם האובייקט שעבר סריאליזציה חורג מהגודל המקסימלי שלו. זה היה קורה רק בשרשור ברקע שבו לא הייתה אפשרות לטפל כראוי. - הבחנה נוספת: עבודה שנעצרה לעומת עבודה שבוטלה; הפונקציה
getWorkInfoById()
תחזירWorkInfo
עם הערךCANCELLED
State
במהלךListenableWorker.onStopped()
. - יש להתייחס ל-
null
Result
ככשלים ב-ListenableWorker
. b/120362353 - תיקון ספקולטיבי לטאבלטים של Shield שמריצים את API 24 ולפעמים גרם להם
IllegalArgumentException
. b/119484416
הפרות שינויים ב-API
- התמיכה ב-Firebase JobDispatcher הוסרה כי בקרוב היא תוצא משימוש. פירוש הדבר הוא שהארטיפקט של
work-firebase
לא יתעדכן יותר כשנכנס לגרסת הבטא. אנחנו נבדוק אפשרות להוסיף חלופה בעתיד. - שילבת את
Payload
אלResult
.Result
הוא עכשיו "כיתה חתומה" עם שלוש הטמעות קונקרטיות, שאפשר לקבל דרךResult.success()
(אוResult.success(Data)
),Result.failure()
(אוResult.failure(Data)
) ו-Result.retry()
. התוצאות שלListenableFuture
שלך עכשיו הןResult
במקוםPayload
. לפונקציותWorker
אין שיטות getter ו-setter לפלטData
. - נוספו שיטות תוסף
Operation.await()
ו-ListenableFuture.await()
של Kotlin. - השם של
Operation.getException()
השתנה. השם החדש הואOperation.getThrowable()
. - המחלקה והשיטות של
ContentUriTriggers
שמפנים אליה כבר לא זמינות לשימוש באופן ציבורי. - הסרנו את שאר שיטות ה-Varargs ב-
WorkManager
, ב-WorkContinuation
וב-OneTimeWorkRequest
כדי לייעל את ה-API. כדי לפתור בעיות ב-build, אפשר לכלול את הוריאנטים הקיימים באמצעותArrays.asList(...)
. אנחנו עדיין כוללים גרסאות של ארגומנט יחיד בכל שיטה. - הוסרו
WorkContinuation.combine(OneTimeWorkRequest, *)
וריאנטים. הם הציגו API מבלבל; השיטות הקיימות שלcombine
מובנות יותר.
גרסה 1.0.0-alpha11
8 בנובמבר 2018
הגרסה הזו כוללת שינויים רבים שיהפכו ל-API יציב ב-beta
.
בגרסה הזו יש שינויי API שעלולים לגרום לכשל. יש לעיין בקטע Breaking API Changes (שינויים ב-API) שבהמשך.
שינויים ב-API
work-runtime-ktx
עםCoroutineWorker
חדש.- השם של
WorkStatus
השתנה ל-WorkInfo
. כל הווריאציות המתאימות של השיטהgetStatus
השתנו לשם החדשgetWorkInfo
וריאנטים תואמים. זהו שינוי תוכנה שעלול לגרום לכשלים. - הפרמטר
ListenableWorker.onStopped()
כבר לא מקבל ארגומנט בוליאני שמייצג אם הפרמטרWorkRequest
בוטל. ההבחנה הזו לא מופיעה יותר על ידיWorkManager
. זהו שינוי תוכנה שעלול לגרום לכשלים. - השם של חבילת
androidx.work.test
השתנה לחבילהandroidx.work.testing
. זהו שינוי תוכנה שעלול לגרום לכשלים. - המגדירים ב-
Constraints
כבר לא חלק מה-API הציבורי. זהו שינוי תוכנה שעלול לגרום לכשלים. WorkerParameters.getTriggeredContentUris()
ו-WorkerParameters.getTriggeredContentAuthorities()
החזירו מערכים בעבר. עכשיו השיטות האלה מחזירות אוספים. זהו שינוי תוכנה שעלול לגרום לכשלים.- השם של
ListenableWorker.onStartWork()
השתנה ל-ListenableWorker.startWork()
. זהו שינוי תוכנה שעלול לגרום לכשלים. - ה-constructor של
WorkStatus
כבר לא חלק מה-API הציבורי. זהו שינוי תוכנה שעלול לגרום לכשלים. - השמות של
Configuration.getMaxJobSchedulerID()
ושלConfiguration.getMinJobSchedulerID()
השתנו ל-Configuration.getMinJobSchedulerId()
ו-Configuration.getMaxJobSchedulerId()
בהתאמה. זהו שינוי תוכנה שעלול לגרום לכשלים. - נוספו הרבה הערות
@NonNull
ל-API הציבורי כדי לשפר את הארכיטקטורה של ה-API. - צריך להוסיף את API של
WorkManager.enqueueUniqueWork()
כדי להוסיף לחשבוןOneTimeWorkRequest
ייחודיים בלי ליצורWorkContinuation
. - כל הווריאציות של שיטות
enqueue
ו-cancel
ב-WorkManager
מחזירות עכשיו סוג חדש שלOperation
. זהו שינוי תוכנה שעלול לגרום לכשלים. - כל הווריאציות של
enqueue
לא יכולות יותר לקבל וריאציות שלWorkRequest
. זהו שינוי תוכנה שעלול לגרום לכשלים. במקום זאת, אפשר להשתמש באוספים. אפשר להשתמש ב-Arrays.asList()
כדי לשנות קוד קיים. עשינו את זה כדי לצמצם את מספר הפלטפורמות של ה-API ואת מספר ה-methods. - ניסיון
initialize
WorkManager
יותר מפעם אחת בכל תהליך יוביל מעכשיו ל-IllegalStateException
. זהו שינוי תוכנה שעלול לגרום לכשלים.
תיקוני באגים
WorkRequest.Builder
בארטיפקט שלwork-runtime-ktx
משתמשים עכשיו ב-ListenableWorker
. תיקונים b/117666259- יש לוודא שזמן ההפעלה הבא של
PeriodicWork
חל בעתיד. תיקונים b/118204399 - הסרת קלט/פלט פוטנציאלי מהדיסק במהלך שימוש ב-WorkManager במהלך הפעלת האפליקציה. תיקונים b/117796731
- תיקון מרוץ תהליכים ב-
WorkConstraintsTracker
. פותר את הבעיה android-workmanager/issues/56
הפרות שינויים ב-API
- השם של
WorkStatus
השתנה ל-WorkInfo
. כל הווריאציות המתאימות של השיטהgetStatus
השתנו לשם החדשgetWorkInfo
וריאנטים תואמים. - הפרמטר
ListenableWorker.onStopped()
כבר לא מקבל ארגומנט בוליאני שמייצג אם הפרמטרWorkRequest
בוטל. ההבחנה הזו לא מופיעה יותר על ידיWorkManager
. - השם של חבילת
androidx.work.test
השתנה לחבילהandroidx.work.testing
. - המגדירים ב-
Constraints
כבר לא חלק מה-API הציבורי. WorkerParameters.getTriggeredContentUris()
ו-WorkerParameters.getTriggeredContentAuthorities()
החזירו מערכים בעבר. עכשיו השיטות האלה מחזירות אוספים.- השם של
ListenableWorker.onStartWork()
השתנה ל-ListenableWorker.startWork()
. - ה-constructor של
WorkStatus
כבר לא חלק מה-API הציבורי. - השמות של
Configuration.getMaxJobSchedulerID()
ו-Configuration.getMinJobSchedulerID()
הםConfiguration.getMinJobSchedulerId()
ו-Configuration.getMaxJobSchedulerId()
בהתאמה. - כל הווריאציות של שיטות
enqueue
ו-cancel
ב-WorkManager
מחזירות עכשיו סוג חדש שלOperation
. - כל הווריאציות של
enqueue
לא יכולות יותר לקבל וריאציות שלWorkRequest
. - ניסיון
initialize
WorkManager
יותר מפעם אחת בכל תהליך יוביל מעכשיו ל-IllegalStateException
.
גרסה 1.0.0-alpha10
11 באוקטובר 2018
הגרסה הזו תומכת בעבודה אסינכרונית בשליטת המפתח. בגרסה הזו יש שינויי API שעלולים לגרום לכשל. יש לעיין בקטע Breaking API Changes (שינויים ב-API) שבהמשך.
אנחנו צופים ש-WorkManager נכנס לשלבים האחרונים של תקופת האלפא. ה-API צפוי להיות יציב בגרסת הבטא, כך שכדאי להקדיש זמן כדי לשלוח משוב על הכלי שלנו למעקב אחר בעיות.
שינויים ב-API
- הסרת כל ה-methods והמחלקות
deprecated
, ובמיוחד את ה-constructor של ברירת המחדלWorker
. זהו שינוי תוכנה שעלול לגרום לכשל ב-API. - השם
NonBlockingWorker
שונה. השם החדש הואListenableWorker
, והוא עכשיו מחלקה ציבורית לא מוסתרת ומוכן לשימוש.- הפונקציה
ListenableWorker
נותנת גישה לשיטה מופשטת אחת,ListenableFuture<Payload> onStartWork()
, שנקראת בשרשור הראשי. באחריותך להתחיל ולעבד את העבודה באופן אסינכרוני. בסיום, צריך לעדכן אתListenableFuture
בהתאם. הטמעות של קובצי עזר שלListenableFuture
סופקו בחבילתFutures
ב-alpha02
(מידע נוסף מפורט בקטעWorkManager
). Worker
נרחיב אתListenableWorker
ועדיין פועל כמו קודם, באמצעות שיטה מופשטתResult doWork()
.- ערבוב חלק מהשיטות והחברים מ-
Worker
עדListenableWorker
. - בקרוב נספק הטמעות של קובצי עזר ל-
ListenableWorker
שמשתמשים בקורוטינים של Kotlin (לאחר פרסום הגרסאות היציבות) וב-RxJava2.
- הפונקציה
- הממשק
WorkerFactory
וההטמעה הבטוןDefaultWorkerFactory
מוזגו למחלקה מופשטת שנקראתWorkerFactory
. ההטמעה מבטיחה שההתנהגות שמבוססת על השתקפות כברירת מחדל תיקרא כמאמץ אחרון בכל מכונותWorkerFactory
שנוצרו על ידי משתמשים. זהו שינוי תוכנה שעלול לגרום לכשלים. - הוסרו
WorkManager.synchronous()
וWorkContinuation.synchronous()
וכל השיטות הקשורות. הוספנו אתListenableFuture<Void>
כסוג ההחזרה של שיטות רבות ב-API. זהו שינוי תוכנה שעלול לגרום לכשל ב-API.- עכשיו אפשר לקבל תמונות וסרטונים באופן סינכרוני באמצעות
ListenableFuture
. לדוגמה, הפונקציהWorkManager.enqueue()
משמשת להחזרתvoid
; הפונקציה מחזירה את הערךListenableFuture<Void>
. לאחר השלמת הפעולה, ניתן יהיה להפעיל את הקודListenableFuture.addListener(Runnable, Executor)
אוListenableFuture.get()
כדי להריץ את הקוד. - חשוב לשים לב שה
ListenableFuture
לא מציין אם הפעולה הצליחה או נכשלה. רק שהם סיימו. עדיין תצטרכו לשרשר שיטות של WorkManager כדי לברר את המידע הזה. - אנחנו מתעלמים מקריאות
cancel()
לאובייקטים האלה, כי הן מבלבלות וקשה להסביר אותן (האם בחרת לבטל את הפעולה או את העבודה שתתקבל?). הסכום הזה חל על החוזה שלFuture
. - כדי לשמור על התאמה לשיטות
getStatus*
הסינכרוניות, סיפקנוListenableFuture
וריאנטים, ושינינו את השם של השיטות הקיימות שהחזירו את הערךLiveData
כך שיכללו את "LiveData" באופן מפורש. כחלק מהשם (לדוגמה,getStatusesByIdLiveData(UUID)
). זהו שינוי תוכנה שעלול לגרום לכשל ב-API.
- עכשיו אפשר לקבל תמונות וסרטונים באופן סינכרוני באמצעות
תיקוני באגים
- תוקנה הבעיה המוכרת מגרסת alpha09 בנוגע לקובצי
androidx-annotations.pro
כפולים. אפשר להסיר את הפתרון החלופי מנתוני הגרסה הקודמים על ידי מחיקה שלexclude 'META-INF/proguard/androidx-annotations.pro'
מקובץ gradle. - נוספו הגדרות מוגנים כדי לשמור את ה-constructor החדש של
Worker
. b/116296569 - תיקון
NullPointerException
פוטנציאלי במרוץ תהליכים שבו העבודה בוצעהREPLACE
ימים. b/116253486 ו-b/116677275 WorkContinuation.combine()
יכול עכשיו לקבל כרטיסWorkContinuation
אחד או יותר במקום שניים או יותר. b/117266752
הפרות שינויים ב-API
- הסרת כל ה-methods והמחלקות
deprecated
, ובמיוחד את ה-constructor של ברירת המחדלWorker
. - הממשק
WorkerFactory
וההטמעה הבטוןDefaultWorkerFactory
מוזגו למחלקה מופשטת שנקראתWorkerFactory
. - בוצעה הסרה של
WorkManager.synchronous()
ושלWorkContinuation.synchronous()
. - באמצעות
WorkManager.getStatus*()
methods מוחזרותListenableFuture
.WorkManager.getStatus*LiveData()
מחזירהLiveData
שנ'.
גרסה 1.0.0-alpha09
19 בספטמבר 2018
בעיה ידועה
אם נתקלתם בבעיה הבאה: "נמצא יותר מקובץ אחד עם הנתיב הבלתי תלוי של מערכת ההפעלה 'meta-INF/proGuard/androidx-annotations.pro'",
מגניב
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
תיקוני באגים
- נוסף תיקון נוסף שהיה נדרש עבור '100 משימות' שגיאה. b/115560696
- נוספו כמה תיקונים לשגיאות באילוצים של מפתחות זרים עקב מרוץ תהליכים. b/114705286
- הוענקה גישה של
ConstraintTrackingWorker.onStopped(boolean)
קריאות ל-Worker
הבסיסי. b/114125093 - אכיפה נכונה של השהיה מינימלית לפני ניסיון חוזר (backoff) ב-Firebase JobDispatcher. b/113304626
- שיפור באיכות השרשורים מבטיח בתוך הספרייה.
- תיקון בעיה פוטנציאלית בביטול כפילויות של
LiveData
באופן פנימי.
שינויים ב-API
- עכשיו אפשר ליצור מכונות
Worker
משלכם בזמן ריצה על ידי ציון השדהWorkerFactory
כחלק מהשדהWorkManager.Configuration
. היצרן החלופי הואDefaultWorkerFactory
, שתואם להתנהגות של הגרסאות הקודמות של WorkManager.- הבנאים שמוגדרים כברירת מחדל עבור
Worker
ו-NonBlockingWorker
מסומנים עכשיו כהוצאה משימוש. עליך להשתמש ב-constructor החדש (Worker(Context, WorkerParameters)
) ולקרוא ל-super(Context, WorkerParameters)
; הגרסאות העתידיות של WorkManager יסירו את בנאי ברירת המחדל.
- הבנאים שמוגדרים כברירת מחדל עבור
- התחלנו להשתמש בארטיפקט
ListenableFuture
החדש באופן פנימי (ללא יחסי תלות של Guava). בגרסאות הבאות נציג את ListenableFutures ל-API. השינוי הזה יתמוך בביטול ההסתרה שלNonBlockingWorker
בסופו של דבר. - הוספת יכולת להפעיל עבודה מתוזמנת ב-
TestDriver
דרךTestDriver.setInitialDelayMet(UUID)
ו-TestDriver.setPeriodDelayMet(UUID)
. b/113360060
שינויי תוכנה שעלולים לגרום לכשלים
- הבנאים
Worker
ו-NonBlockingWorker
שמוגדרים כברירת מחדל הוצאו משימוש. חשוב לעבור ל-constructor החדש בהקדם האפשרי. גרסאות עתידיות יסירו את בנאי ברירת המחדל.
גרסה 1.0.0-alpha08
27 באוגוסט 2018
תיקוני באגים
- רכיבי WorkManager שתויגו באופן מפורש כהפעלה ישירה לא מודעים לכך שהם לא יופעלו במהלך הפעלה ישירה. בעתיד, נספק גרסה של WorkManager עם הרשאת אתחול ישירה. b/112665532
- תוקנה בעיה שבה עבודה לניסיון חוזר לא פעלה. b/112604021
- עבודה תקופתית קבועה שלא מתבצעת שוב ושוב (קשורה לבעיה שצוינה למעלה). b/112859683
- יש לפעול בהתאם למדיניות בנושא השהיה לפני ניסיון חוזר כשתהליך האפליקציה כבר פועל.
- הודעות חריגות תוקנו ב-
Data
כדי לציין שהמגבלה היא 10KB. - הערך המקסימלי של
Configuration.setMaxSchedulerLimit(int)
הונמך ל-50 כדי להביא בחשבון זמן אחזור מסוים בסיום העיבוד שלJobScheduler
. b/112817355
גרסה 1.0.0-alpha07
16 באוגוסט 2018
תיקוני באגים
- תוקנה שאילתת SQL פוטנציאלית עם מגבלות שליליות שעלולות להחזיר מספר בלתי מוגבל של תוצאות.
- עבודה שהסתיימה בהצלחה מבטלת עכשיו את כל העותקים שבהמתנה של אותה עבודה בכלי תזמון אחרים. כתוצאה מכך, חרגת מהמגבלה של
JobScheduler
משרות. b/111569265 - תוקן
ConcurrentModificationException
ב-ConstraintTracker
. b/112272753 - ההערות של סוג ההחזרה
Data.getBooleanArray(String)
ו-Data.getIntArray(String)
השתנו ל-@Nullable
במקום@NonNull
. b/112275229
שינויים ב-API
Worker
מציעה עכשיו כיתה חדשה,NonBlockingWorker
. אין לכך השפעה על השימוש הנוכחי. בעתיד, נוסיף אתNonBlockingWorker
לישות עם תמיכה מלאה בפתרונות שרשור בהתאמה אישית.- ההערות של סוג ההחזרה
Data.getBooleanArray(String)
ו-Data.getIntArray(String)
השתנו ל-@Nullable
במקום@NonNull
. b/112275229 - תוספי Kotlin: הוצאו משימוש את
Map.toWorkData()
ונוספוworkDataOf(vararg Pair<String, Any?>)
ברמה העליונה כדי לשמור על עקביות עם ממשקי ה-API הקיימים.
גרסה 1.0.0-alpha06
1 באוגוסט 2018
תיקוני באגים
- למנוע נעילה של מסד נתונים במהלך תזמון עבודה. b/111801342
- תיקון באג שגורם ל-
PeriodicWork
לא לפעול לפי לוח הזמנים במצב 'נמנום'. b/111469837 - יש לתקן מרוץ תהליכים בזמן מגבלות מעקב שגורמות ל-
WorkManager
לקרוס. googlecodelabs/android-workmanager/issues/56 - יוצרים
WorkRequest
ייחודיים כשמשתמשים ב-WorkRequest.Builder#build()
. b/111408337 - יש להפעיל את השימוש ב-
RescheduleReceiver
רק כאשר ישWorkRequest
צורך בו. b/111765853
גרסה 1.0.0-alpha05
24 ביולי 2018
שינויים ב-API
- הוספנו ל-
WorkManager.getInstance()
הערות עם@NonNull
במקום@Nullable
. במקום זאת, אם הסינגלטון לא מאותחל כראוי במקרים של אתחול ידני, השיטה תקפיץIllegalStateException
. זהו שינוי תוכנה שעלול לגרום לכשל ב-API. - נוסף ממשק API חדש,
Configuration.Builder.setMinimumLoggingLevel(int)
, שיכול לשלוט ברמת דרגת המלל של WorkManager. כברירת מחדל, WorkManager מתעד אתLog.INFO
ואילך. - החתימה של
Data.getString()
שונתה, כך שהיא לא מקבלת יותר ערך ברירת מחדל (הוא לא מוגדר באופן מרומזnull
). זהו שינוי תוכנה שעלול לגרום לכשל ב-API. - חלק מהשיטות סומנו כ-
@hide
שנדרשות רק לשימוש פנימי. זה כולל את ה-constructor שלConstraints
,Data.toByteArray()
ו-Data.fromByteArray(byte[])
. זהו שינוי תוכנה שעלול לגרום לכשל ב-API.
תיקוני באגים
- WorkManager כבר לא מבצע עבודה במהלך מקרים ידועים של גיבוי אוטומטי. ייתכן שכתוצאה מכך התרחשה תאונה. b/110564377
- תוקן התזמון הכפול של
PeriodicWorkRequest
כשמשתמשים ב-JobScheduler
. b/110798652 - תוקנה בעיה ב-
PeriodicWorkRequest
שלא פעלה כראוי לאחר נמנום המכשיר. b/111469837 - תוקנה בעיה של עיכובים ראשוניים במהלך השימוש ב-JobDispatcher ב-Firebase. b/111141023
- תוקנו כמה בעיות אפשריות במרוץ ובתזמון.
- פינית
BroadcastReceiver
פריטים שלא היה בהם צורך יותר. - ביצועים אופטימליים של תזמון מחדש כשאפליקציות מופעלות מחדש לאחר סגירה מאולצת.
- אישרת את הקריאה אל
TestScheduler.setAllConstraintsMet(UUID)
לפני או אחרי הכניסה שלWorkRequest
הנתון לתור. b/111238024
שינויי תוכנה שעלולים לגרום לכשלים
- הוספנו ל-
WorkManager.getInstance()
הערות עם@NonNull
במקום@Nullable
. - החתימה של
Data.getString()
שונתה, כך שהיא לא מקבלת יותר ערך ברירת מחדל (הוא לא מוגדר באופן מרומזnull
). - חלק מהשיטות סומנו כ-
@hide
שנדרשות רק לשימוש פנימי. זה כולל את ה-constructor שלConstraints
,Data.toByteArray()
ו-Data.fromByteArray(byte[])
.
גרסה 1.0.0-alpha04
26 ביוני 2018
תיקוני באגים
- כשמשתמשים בהטמעה שמבוססת על
AlarmManager
, תזמון מחדש של הערכים של 'PeriodicWorkRequest
' משתנה כמו שצריך. - תוקנה שגיאת ANR פוטנציאלית במהלך תזמון מחדש של כל העובדים לאחר סגירה ידנית או הפעלה מחדש. b/110507716
- נוספו הערות אפסיות לממשקי API שונים של WorkManager. b/110344065
- רישום חריגים לא מזוהים שהתרחשו במהלך ביצוע ה-Worker. b/109900862
- מותרות העברות הרסניות של מסדי נתונים למקרה שתרצה לחזור לגרסה ישנה יותר של WorkManager. b/74633270
- תוקנה קריסת העברה אם יצרת תגים משתמעים כפולים. זוהי בעיה נדירה מאוד שמתרחשת רק אם השתמשת בעצמך באותו פורמט משתמע של תג.
גרסה 1.0.0-alpha03
19 ביוני 2018
תיקוני באגים
תוקן מרוץ תהליכים בהטמעה מבוססת
AlarmManager
. b/80346526.תוקנו משימות כפולות במהלך שימוש ב-
JobScheduler
לאחר הפעלה מחדש של המכשיר.משימות עם טריגרים של Content URI תקפות עכשיו בכל הפעלות מחדש. b/80234744
עדכונים במסמכים. b/109827628, b/109758949, b/80230748
תוקנה קריסה במהלך הוספה מחדש של
WorkRequest
לתור. b/109572353.תוקנו אזהרות מהדר של Kotlin בעת השימוש בתלות
work-runtime-ktx
.ב-WorkManager משתמש עכשיו
Room
בגרסה1.1.1-rc1
.
שינויים ב-API
- נוספה
getStatusesSync()
, הגרסה הסינכרונית שלWorkContinuation.getStatuses()
. Worker
יכול להבחין בין ביטול ביוזמת המשתמש לבין עצירה זמנית במערכת. אם מזינים סוג כלשהו של עצירה, הפונקציהWorker.isStopped()
מחזירהtrue
. הפונקציהWorker.isCancelled()
מחזירה את הערךtrue
כשהעבודה בוטלה באופן מפורש. b/79632247- הוספת תמיכה ל-JobParameters#getNetwork() ב-API 28. המידע הזה נחשף דרך
Worker.getNetwork()
. - הוספת את
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
כדי שאפשר יהיה לאכוף את מספר המשימות שניתן לשלוח אלJobScheduler
או אלAlarmManager
. הפעולה הזו מונעת מ-WorkManager
לתפוס את כל משבצות ה-JobScheduler
הזמינות שלך. - נוספה
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
, שעוזרת להגדיר טווח שלJobScheduler
מזהי משימות בטוחים לשימוש שלWorkManager
. b/79996760 - הפונקציה
Worker.getRunAttemptCount()
מחזירה את ספירת ההפעלות הנוכחית שלWorker
נתון. b/79716516 WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
מאפשר לך להוסיף לתור מפתחותPeriodicWorkRequest
ייחודיים. b/79600647WorkManager.cancelAllWork()
מבטל את כלWorker
של. ספריות שתלויות ב-WorkManager
יכולות לשלוח שאילתה לגבי מועד הקריאה האחרונה של השיטה הזו על ידי שימוש ב-WorkManager.getLastCancelAllTimeMillis()
לניקוי נוסף של המצב הפנימי.- בוצעה הוספה של
WorkManager.pruneWork()
כדי להסיר משימות שהושלמו ממסד הנתונים הפנימי. b/79950952, b/109710758
שינויים בהתנהגות
- נוסף תג משתמע לכל פריטי
WorkRequest
, שהוא שם המחלקה שמוגדר במלואו שלWorker
. הפעולה הזו מאפשרת להסירWorkRequest
בליtag
או כש-id
לא זמין. b/109572351
שינויי תוכנה שעלולים לגרום לכשלים
- השם של
Worker.WorkerResult
השתנה. השם החדש הואWorker.Result
. Worker.onStopped
כולל עכשיו פרמטרisCancelled
נוסף שמוגדר ל-true
כאשרWorker
בוטל באופן מפורש.
גרסה 1.0.0-alpha02
24 במאי 2018
תיקוני באגים
- בוצע תיקון
NullPointerException
בתאריךState.isFinished()
. b/79550068 - תוקנה בעיה שגרמה לתזמון מחדש של
Worker
שניות בתאריךApplication.onCreate()
. b/79660657 - תוקנה בעיה שבה יכולת לתזמן עבודה רבה יותר מהמותר על ידי מערכת ההפעלה. b/79497378
- הועבר ניקוי של חסימות מצב שינה המשויכות ל-
Worker
לשרשור ברקע. - נכון לעכשיו, ההטמעה של
AlarmManager
מתנקה כמו שצריך כשכל העבודה שבהמתנה הושלמה. - תוקנו שאילתות SQL של ניקוי נתונים שהשפיעו על לוקאלים לא באנגלית. b/80065360
- נוספה תמיכה עבור
float
בData
. b/79443878 - הפונקציה
Data.Builder.putAll()
מחזירה עכשיו מופע שלBuilder
. b/79699162 - מידע נוסף על Javadoc ותיקונים מופיעים במאמרי העזרה. b/79691663
שינויים ב-API
Worker
יכולים להגיב לעצירה. אפשר להשתמש ב-Worker.isStopped()
כדי לבדוק אםWorker
הופסק. אפשר להשתמש ב-Worker.onStopped()
כדי לבצע פעולות ניקוי קלות.- ה-API של
Worker.getTags()
מחזירSet
של תגים שמשויכים ל-Worker
. - נוספו
javax.time.Duration
עומסי יתר של ממשקי API שנמשכים שילוב שלTimeUnit
שניות. ההגדרה הזו נשמרת על ידי@RequiresApi(26)
. - תוספים של
WorkManager
הועברו מהחבילהandroidx.work.ktx
לחבילהandroidx.work
. התוספים הישנים הוצאו משימוש ויוסרו בגרסאות עתידיות. - האפשרות
Configuration.withExecutor()
הוצאה משימוש. במקומה צריך להשתמש במדיניותConfiguration.setExecutor()
.
גרסה 1.0.0-alpha01
8 במאי 2018
WorkManager מפשט את התזמון והביצוע של
עבודת רקע מובטחת ומבוססת-אילוצים. הגרסה הראשונית הזו היא 1.0.0-alpha01
.