WorkManager
העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
---|---|---|---|---|
30 ביולי 2025 | 2.10.3 | - | - | - |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-WorkManager, צריך להוסיף את מאגר Google Maven לפרויקט:
מוסיפים את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle
של האפליקציה או המודול:
מגניב
dependencies { def work_version = "2.10.3" // (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.10.3" // (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.3
30 ביולי 2025
androidx.work:work-*:2.10.3
משוחרר. גרסה 2.10.3 מכילה את הקומטים האלה.
תיקוני באגים
- תוקנה בעיה שבה עובדים עם מגבלות רשת זהות לעובד קודם דיווחו שהמגבלות לא מתקיימות. (b/427115602).
גרסה 2.10.2
18 ביוני 2025
androidx.work:work-*:2.10.2
משוחרר. גרסה 2.10.2 מכילה את ההתחייבויות האלה.
תיקוני באגים
- תוקנה בעיה שמתרחשת כששומרים עובדים עם בקשות רשת ויכולות שמוגדרות כברירת מחדל, שגורמת להוספה מחדש של יכולות שהוסרו, וכתוצאה מכך להתנהגות לא תקינה של עובדים עם מגבלות רשת. (b/409716532)
- תוקן באג שגרם לכך שעובדים עם מגבלות רשת לא יפעלו באופן מיידי בגלל מגבלות שלא מתקיימות, למרות שהרשת והיכולות היו זמינות. (b/423403088)
גרסה 2.10.1
23 באפריל 2025
androidx.work:work-*:2.10.1
משוחרר. גרסה 2.10.1 מכילה את ההתחייבויות האלה.
תיקוני באגים
- הקטנת הסיכוי ש-
TooManyRequestsException
יופעל מרישום שלNetworkCallback
שמשמש למעקב אחר אילוצים על ידיWorkManager
. (b/231499040, b309d5).
גרסה 2.10.0
30 באוקטובר 2024
androidx.work:work-*:2.10.0
משוחרר. גרסה 2.10.0 מכילה את ההעברות האלה.
שינויים משמעותיים מאז גרסה 2.9.1
- הוספנו תגי מעקב למשימות מ-
WorkManager
, כך שהפלט של הפקודה adb shell dumpsys jobscheduler יהיה הרבה יותר קל להבנה כי הוא יכיל את השם של ה-Worker שמבוצע. בנוסף, מתווספים קטעי מעקב סביב אזורים מרכזיים ב-WorkManager
. - הוספנו את
Configuration.workerCoroutineContext
כדי לשלוט ב-dispatcher שבו מתבצעת הפעולהCoroutineWorker
. - מפתחים יכולים לציין את
NetworkRequest
כמגבלה לעובד באמצעות השיטהConstraints.setRequiredNetworkRequest
. כך אפשר לקבוע בצורה מדויקת יותר באיזו רשת העובד הזה צריך לפעול. -
WorkManager
2.10.0 עכשיו עובר קומפילציה עם SDK 35 ומכיל שינויים שונים לצורך תאימות ל-SDK 35.
גרסה 2.10.0-rc01
24 באוקטובר 2024
androidx.work:work-*:2.10.0-rc01
משוחרר. גרסה 2.10.0-rc01 מכילה את ההתחייבויות האלה.
גרסה 2.10.0-beta01
2 באוקטובר 2024
androidx.work:work-*:2.10.0-beta01
משוחרר. גרסה 2.10.0-beta01 מכילה את הקומטים האלה.
גרסה 2.10.0-alpha04
18 בספטמבר 2024
androidx.work:work-*:2.10.0-alpha04
משוחרר. גרסה 2.10.0-alpha04 מכילה את הקומטים האלה.
שינויים ב-API
- מוסיפים את סיבת ההפסקה
STOP_REASON_FOREGROUND_SERVICE_TIMEOUT
למקרים שבהם עובד בחזית מופסק בגלל פסק זמן לביצוע, על סמך סוג השירות שפועל בחזית. (Ibd0af)
גרסה 2.10.0-alpha03
4 בספטמבר 2024
androidx.work:work-*:2.10.0-alpha03
משוחרר. גרסה 2.10.0-alpha03 מכילה את ההתחייבויות האלה.
תכונות חדשות
- הוספנו תגי מעקב למשימות מ-
WorkManager
, כך שהפלט של הפקודה adb shell dumpsys jobscheduler יהיה הרבה יותר קל להבנה כי הוא יכיל את השם של ה-Worker שמבוצע. בנוסף, מתווספים קטעי מעקב סביב אזורים מרכזיים ב-WorkManager
.
שינויים ב-API
- WorkManager 2.10.0 עובר עכשיו קומפילציה עם SDK 35.
- תיקון של עובדים שפועלים בחזית מסוג 'שירות קצר' ו'סנכרון נתונים' שפג הזמן שלהם וגרמו ל-ANR כש-
WorkManager
לא קרא ל-stopSelf()
. התיקון הזה רלוונטי רק למכשירים עם 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 מומלץ לעדכן לגרסה D8 8.1 ואילך. למידע נוסף, מומלץ לעיין במאמר הזה. (Ia60e0, b/345472586)
גרסה 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
כדי לשלוט ב-dispatcher שבו מתבצעת הפעולהCoroutineWorker
. היא עוזרת להימנע לחלוטין משימוש ב-Dispatchers.Default
ב-WorkManager
. (Icd1b7) - הוספת handlers מותאמים אישית לחריגים ב-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 via
Flow
-s. במקוםLiveData
, אפשר לעקוב אחרי ההתקדמות של Worker באמצעות Flow דרךWorkManager.getWorkInfosFlow
ושיטות דומות. - עכשיו
WorkManager
מספק רמז לגבי הסיבה להפסקה הקודמת של העובד. אפשר לשלוח שאילתה לגביו מה-Worker עצמו באמצעות השיטהgetStopReason()
או מ-WorkInfo
באמצעותgetStopReason()
. - תזמון מדויק של עובדים תקופתיים באמצעות
setNextScheduleTimeOverride
. כך אפשר לחשב באופן דינמי את לוח הזמנים הבא של העבודה התקופתית, שניתן להשתמש בו כדי להטמיע תכונות מתקדמות כמו זמני רענון דינמיים, התנהגות מותאמת של ניסיון חוזר או הפעלה של worker של עדכוני חדשות לפני שהמשתמש מתעורר כל בוקר בלי סחף.ExistingPeriodicWorkPolicy.UPDATE
צריך להשתמש בשיטות האלה כדי להימנע מביטול של תהליך Worker שפועל כרגע בזמן שתזמון התהליך הבא מתבצע. - בדיקות של WorkManager עם התאמה של שרשורים לייצור. אפשר להשתמש ב-
ExecutorsMode.PRESERVE_EXECUTORS
ב-initializeTestWorkManager
כדי לשמור על ה-executors שהוגדרו ב-Configuration
ולהשתמש בשרשור הראשי האמיתי. - ממשקי API של קורוטינות, כמו
CoroutineWorker
, הועברו מפריט מידע נוסף work-runtime-ktx לפריט המידע הראשי work-runtime. עכשיו work-runtime-ktx ריק.
שינויים ב-API
stopReason
נוסף ל-WorkInfo
. הוא הופך אתstopReason
לזמין אחרי שה-Worker פועל. הוא יכול להיות שימושי בדיווחstopReason
בצורה שניתן להשתמש בה, כי אחרי שעובד מופסק, אפשר להרוג את האפליקציה עצמה במהירות רבה. (I21386)- אפשר להגדיר את
Clock
באמצעות קובץ הגדרות ולהשתמש בו כדי לקבוע את סדר הביצוע של בדיקות Worker. (Ic586e) - השיטה
getStopReason()
נוספה ל-ListenableWorker
כדי לתת רמז למה העובד הופסק. (I07060) - הוספנו את
WorkManagerTestInitHelper#closeWorkDatabase()
כדי למנוע את האזהרה של Closeguard לגבי משאבים שנחשפו. (Ia8d49) - ה-constructor של
WorkInfo
הוא עכשיו ציבורי, וזה יכול להיות שימושי לבדיקות. (Ia00b6, b/209145335) - הספרייה
work-runtime-ktx
ריקה עכשיו, וספריות עזר אחרות שספציפיות ל-Kotlin זמינות עכשיו בארטיפקט הראשי של זמן הריצה של העובד.CoroutineWorker
(I71a9a) - נוספה שיטה
setNextScheduleTimeOverride
שמאפשרת הגדרה מדויקת של לוחות זמנים תקופתיים לעבודה (I3b4da) - נוספה
getNextScheduleTimeMillis
כדי לקבל מידע על זמן הריצה המתוזמן, והיא נוספת ל-WorkInfo
. (I797e4) - פרטים על העיכוב הראשוני והמחזוריות מתווספים ל-
WorkInfo
. (I52f2f) - נוספה שיטה למעקב אחרי עובדים באמצעות Flows דרך השיטות
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) - הערות חסרות מסוג
@RequiresApi(...)
נוספו ל-Constraints
' constructors ולמאפיינים. הן מיושרות עכשיו עם הערות תואמות בפונקציות setter ב-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
מספק רמז לגבי הסיבה להפסקה הקודמת של העובד. אפשר לשלוח שאילתה לגביו מה-Worker עצמו באמצעות השיטהgetStopReason()
או מ-WorkInfo
באמצעותgetStopReason()
.
שינויים ב-API
stopReason
נוסף ל-WorkInfo
. הוא הופך אתstopReason
לזמין אחרי שה-worker פועל. הוא יכול להיות שימושי בדיווח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 via
Flow
-s. במקוםLiveData
, אפשר לעקוב אחרי ההתקדמות של Worker באמצעות Flow דרךWorkManager.getWorkInfosFlow
ושיטות דומות. - תזמון מדויק של עובדים תקופתיים באמצעות
setNextScheduleTimeOverride
. כך אפשר לחשב באופן דינמי את לוח הזמנים הבא של העבודה התקופתית, שניתן להשתמש בו כדי להטמיע תכונות מתקדמות כמו זמני רענון דינמיים, התנהגות מותאמת של ניסיון חוזר או הפעלה של worker של עדכוני חדשות לפני שהמשתמש מתעורר כל בוקר בלי סחף.ExistingPeriodicWorkPolicy.UPDATE
צריך להשתמש בטכניקות האלה כדי להימנע מביטול של תהליך worker שפועל כרגע בזמן שתזמנים את התהליך הבא. WorkManager
הבדיקה של התאמת השרשור לייצור.ExecutorsMode.PRESERVE_EXECUTORS
יכול לשמש לשמירה על מנהלי ביצוע שהוגדרו ב-Configuration
ולשימוש בשרשור הראשי האמיתי.- ממשקי API של קורוטינות, כמו
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) - נוספה שיטה למעקב אחרי עובדים באמצעות Flows דרך השיטות
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) - הערות חסרות של
@RequiresApi(...)
נוספו למאפיינים ולבוני האילוצים. הן מיושרות עכשיו עם הערות תואמות בפונקציות setter ב-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
בצורה לא פולשנית, תוך שמירה על זמן ההוספה לתור המקורי, השרשור וכו'. לפרטים נוספים, אפשר לעיין בפוסט המפורט בבלוג על התכונה הזו, וגם במסמכי ה-Javadoc שלWorkManager.updateWork
ושלExistingPeriodicWorkPolicy.UPDATE
.
שינויים ב-API
WorkManager.updateWork
נוסף כדי לעדכן את העבודה ולשמור על זמן ההוספה המקורי שלה לתור ועל השרשור שלה.(I9a248, b/219446409)- צירפנו את
ExistingPeriodicWorkPolicy.UPDATE
למרחב המשותף. המדיניות הזו מאפשרת לעדכן עבודה תקופתית לפי השם. הוא דומה ל-REPLACE
הקיים, אבל הוא פחות פולשני: הוא לא מבטל worker אם הוא פועל כרגע, והוא שומר על זמן ההוספה לתור – העיכוב הראשוני והתקופה מחושבים מזמן ההוספה המקורי לתור, ולא מזמן העדכון. הוצאנו את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
עבר אתחול. בנוסף, נוסףgetConfiguration()
API חדש למפתחי ספריות כדי לקבל את ההגדרה שאיתה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()
שמחזירות את הדור של העובד. ל-Worker יש כמה דורות אם הוא עודכן באמצעותWorkManager.updateWork
אוWorkManager.enqueueUniquePeriodicWork
באמצעותExistingPeriodicWorkPolicy.UPDATE
. הערה: אם העובד פועל כרגע, יכול להיות שהשיטה הזו תחזיר דור חדש יותר מזה של העובד שפועל כרגע, אם התרחש עדכון במהלך ההפעלה של העובד. (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
הקיים, אבל הוא פחות פולשני: הוא לא מבטל worker אם הוא פועל כרגע, והוא שומר על זמן ההוספה לתור – העיכוב הראשוני והתקופה מחושבים מזמן ההוספה המקורי לתור, ולא מזמן העדכון. המאפיין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
עבר אתחול. בנוסף, נוסףgetConfiguration()
API חדש למפתחי ספריות כדי לקבל את ההגדרה שאיתה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
returningCompletable
שאפשר להשתמש בו במקוםsetForegroundInfoAsync
שמוחזרListenableFuture
. (I85156) - ל-RxWorker ל-RxJava 2 יש עכשיו
getForegroundInfo
שמוחזרSingle
שאפשר להשתמש בו במקוםgetForegroundInfoAsync
שמוחזרListenableFuture
. (I21c91, b/203851459) - ל-RxWorker ל-RxJava 3 יש עכשיו
getForegroundInfo
שמוחזרSingle
שאפשר להשתמש בו במקוםgetForegroundInfoAsync
שמוחזרListenableFuture
. (I1ca8a) - ב-RxWorker יש עכשיו
setForeground
returningCompletable
שאפשר להשתמש בו במקום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 מכילה את הקומיטים האלה.
תיקוני באגים
- כשמשתמשים ב-
suspendCancellableCoroutine
, ביטולים ב-CoroutineScope
מועברים ל-ListenableFuture
. (I77e63) - חריגה מופעלת באופן מיידי כשבקשות עבודה מושהות מסומנות כבקשות דחופות. bef1762
גרסה 2.7.0
13 באוקטובר 2021
androidx.work:work-*:2.7.0
משוחרר. גרסה 2.7.0 מכילה את הקומיטים האלה.
שינויים חשובים מאז גרסה 2.6.0
ב-WorkManager הושק
WorkRequest.Builder.setExpedited(...)
API חדש שיעזור לכם להתמודד עם מגבלות של שירותים שפועלים בחזית ב-Android 12.כשמשתמשים ב-
setExpedited(...)
, WorkManager מבצע העברה של עבודות מואצות ב-JobScheduler החל מ-Android 12, תוך מתן תאימות לאחור בגרסאות קודמות של Android על ידי העברה לשירות שפועל בחזית.
גרסה 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
- הסרה של ממשקי
@ExperimentalExpeditedWork
API בהתחשב בכך שממשקי ה-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()
כבר לא הוצא משימוש. - מומלץ להשתמש ב-
WorkRequest.Builder.setExpedited(...)
API כשאפשר. כדי לתמוך טוב יותר במצבים שבהם האפליקציה לא כפופה להגבלות על שירותים שפועלים בחזית, המפתחים יכולים להשתמש ב-ListenableWorker.setForegroundAsync()
API. - אם מתבצעת קריאה ל-
ListenableWorker.setForegroundAsync()
כשהאפליקציה כפופה להגבלות על שירותים שפועלים בחזית, תופעל ForegroundServiceStartNotAllowedException.
תיקוני באגים
- כשמשימות דחופות מתוזמנות מחדש, הן כבר לא דחופות. הן הופכות למשימות רגילות.
גרסה 2.7.0-alpha03
21 באפריל 2021
androidx.work:work-*:2.7.0-alpha03
משוחרר. גרסה 2.7.0-alpha03 מכילה את הקומיטים האלה.
תכונות חדשות
מ-WorkManager
2.6.0-alpha02
: נוספה תמיכה ב-Workers שיכולים לפעול בכל תהליך. (Iaf200)מ-WorkManager
2.6.0-alpha02
: נוסףRemoteCoroutineWorker
שהוא הטמעה שלRemoteListenableWorker
שיכולה להתחבר לתהליך מרוחק. (I30578)
שינויים ב-API
- WorkManager
2.6.0-alpha02
:נוספה תמיכה במגבלת הרשתTEMPORARILY_UNMETERED
. (I08d5e) - WorkManager
2.6.0-alpha02
:תמיכה בעובדים מרובי-תהליכים ב-setProgressAsync()
. (Ib6d08) - מתוך WorkManager
2.6.0-alpha02
:הופכים אתWorkManagerInitializer
לציבורי כדי ש-androidx.startup.Initializer
אחרים יוכלו להשתמש בו כתלות. (I5ab11)
גרסה 2.7.0-alpha02
10 במרץ 2021
androidx.work:work-*:2.7.0-alpha02
משוחרר. גרסה 2.7.0-alpha02 מכילה את הקומיטים האלה.
תיקוני באגים
- כדי לתקן קריסה כשמטרגטים ל-Android מגרסה 12, צריך להגדיר את יכולת השינוי של
PendingIntent
באופן מפורש. (b/180884673)
גרסה 2.7.0-alpha01
18 בפברואר 2021
androidx.work:work-*:2.7.0-alpha01
משוחרר. גרסה 2.7.0-alpha01 מכילה את הקומיטים האלה.
תכונות חדשות
ב-WorkManager יש
WorkRequest.Builder.setExpedited(...)
API חדש שמתחשב בהגבלות על שירותים שפועלים בחזית ב-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"
כדי לאתחל את WorkManager בעבר, אתם צריכים לבצע את הפעולות הבאות במקום זאת.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.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/1730694 -
RemoteListenableWorker
מבטל עכשיו את הקישור מ-RemoteWorkerService
בצורה נכונה, וכך מאפשר ל-RemoteWorkerService
לנקות את הנתונים בצורה נכונה. aosp/1743817 - האפליקציה
ForceStopRunnable
פועלת עכשיו רק בתהליך האפליקציה הראשי. זו אופטימיזציה שמונעת תחרות על משאבים באפליקציות שמשתמשות בכמה תהליכים. aosp/1749180, aosp/1761729
גרסה 2.6.0-beta01
2 ביוני 2021
androidx.work:work-*:2.6.0-beta01
משוחרר. גרסה 2.6.0-beta01 מכילה את הקומיטים האלה.
הגרסה הזו כוללת שיפורים קלים במסמכים. הגרסה הזו זהה ברובה לגרסה 2.6.0-alpha02.
גרסה 2.6.0-alpha02
21 באפריל 2021
androidx.work:work-*:2.6.0-alpha02
משוחרר. גרסה 2.6.0-alpha02 מכילה את הקומיטים האלה.
תכונות חדשות
נוספה תמיכה ב-Workers שיכולים לפעול בכל תהליך. (Iaf200)
נוסף
RemoteCoroutineWorker
שהוא הטמעה שלRemoteListenableWorker
שיכולה להיקשר לתהליך מרוחק. (I30578)
שינויים ב-API
- נוספה תמיכה בהגבלת רשת
TEMPORARILY_UNMETERED
. (I08d5e) - תמיכה בעובדים מרובי תהליכים ב-
setProgressAsync()
. (Ib6d08) - הופכים את
WorkManagerInitializer
לציבורי כדי ש-androidx.startup.Initializer
s אחרים יוכלו להשתמש בהם כתלות. (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
- הוספת
Result.getOutputData()
API שמחזיר אתoutputData
של ListenableWorker. (Ie51e3)
תיקוני באגים
- הוספנו פתרון עקיף לבאג ב-OEM שגורם להצגת
SecurityException
כשמשתמשים בממשקיAlarmManager
API. (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
ימים + משך הזמן שמוגדר ב-keepResultsForAtLeast. (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
s בניסיון לבטל את הקישור לתהליך שהסתיים. (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
s. (b/172475041, aosp/1489577) - נוסף פתרון עקיף לבאג בפלטפורמה שקורה כשמפסיקים את השירות שפועל בחזית כשמשתמשים ב-
setForeground*
APIs. (b/170924044, aosp/1489901)
גרסה 2.5.0-beta01
28 באוקטובר 2020
androidx.work:work-*:2.5.0-beta01
משוחרר. גרסה 2.5.0-beta01 מכילה את הקומיטים האלה.
תכונות חדשות
WorkManager
מגביל אוטומטית את מספר ה-WorkRequest
s שאפשר לאסוף באמצעות מתזמן התהליכים. הבקשות עדיין מבוצעות בסדר 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) - תיקון כללי ProGuard עבור
: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:*
). הארטיפקט החדש הזה עוזר לפתור כמה בעיות שמתרחשות באפליקציות גדולות, כולל:- בדרך כלל צריך להפעיל את 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
s שהושלמו ואין להם תלות לא מושלמת. משך תקופת המעבר השתנה מ-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
s כשעוקבים אחרי מצב הרשת במכשירים מסוימים. (aosp/1396969)
External Contribution
- תיקון מסמכי התיעוד של
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
s שעשויים להתבצע בעתיד, כולל 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
s לפי שילוב של כמה מאפיינים. מידע נוסף זמין במאמרים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 השעות האחרונות.
- בקשות WorkRequest שנמצאות כרגע במצב RUNNING.
- בקשות עבודה מתוזמנות. (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)
כללי Lint חדשים שמבצעים אכיפה של:
- שימוש ב-
foregroundServiceType
הנכון כשמשתמשים בממשקי API שלsetForegroundAsync()
. (b/147873061, aosp/1215915) - ציון מזהים של JobScheduler ש-WorkManager צריך להשתמש בהם כשמשתמשים ישירות בממשקי JobService API. aosp/1223567
- הוספנו כלל חדש של lint שמוודא ש
ListenableWorker
ההטמעות הן עכשיוpublic
כשמשתמשים בWorkerFactory
שמוגדר כברירת מחדל. (aosp/1291262)
- שימוש ב-
קריאות ל-
setForegroundAsync()
שלא הושלמו לפני השלמתListenableWorker
יסומנו עכשיו באמצעותIllegalStateException
ב-ListenableFuture
שמוחזר. (aosp/1262743)תוקן באג שגרם לכך ש-
ForegroundService
לא הופסק אחרי ש-Worker
בחזית הופרע. (b/155579898, aosp/1302153)תיקון באג שבו
WorkManager
מנסה להפעיל כמה מופעים שלWorker
שקשורים לשירות Foreground (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
שקשורים לשירות Foreground (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) - הוספנו כלל חדש של lint שמוודא ש
ListenableWorker
ההטמעות הן עכשיוpublic
כשמשתמשים בWorkerFactory
שמוגדר כברירת מחדל. (aosp/1291262)
שינויים ב-API
- התקשרות אל
setProgressAsync()
אחרי ש-ListenableWorker
סיים את ההרצה תאותת עכשיו עלException
דרךListenableFuture
. (aosp/1285494) - הסרטון
WorkQuery.Builder
מסומן עכשיו כ-final
. (aosp/1275037) - השמות של שיטות היצירה
WorkQuery.Builder
, withStates
ו-withTags
שונו ל-fromStates
, fromTags
ו-fromUniqueWorkNames
בהתאמה.withUniqueWorkNames
(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 שמציג אזהרה כש-
WorkRequest
s דורש גםConstraints.setRequiresCharging(...)
וגםConstraints.setRequiresDeviceIdle(...)
. חלק מהמכשירים אף פעם לא נטענים ונמצאים במצב לא פעיל בו-זמנית. לכן, בקשות כאלה יופעלו בתדירות נמוכה מהצפוי. (aosp/1253840)
שינויים ב-API
הוספנו את האפשרות לשלוח שאילתות לגבי
WorkInfo
באמצעותWorkQuery
. האפשרות הזו שימושית כשמפתחים רוצים לשלוח שאילתות ל-WorkInfo
s לפי שילוב של כמה מאפיינים. מידע נוסף זמין במאמריםWorkQuery.Builder withStates(...)
,WorkQuery.Builder withTags(...)
אוWorkQuery.Builder withUniqueWorkNames(...)
. (aosp/1253230, b/143847546)קריאות ל-
setForegroundAsync()
שלא הושלמו לפני השלמתListenableWorker
יסומנו עכשיו באמצעותIllegalStateException
ב-ListenableFuture
שמוחזר. (aosp/1262743)
תיקוני באגים
- תוקן כלל ה-lint שבודק משכי זמן לא חוקיים של מרווחים עבור
PeriodicWorkRequest
s. (aosp/1254846, b/152606442)
גרסה 2.4.0-alpha01
4 במרץ 2020
androidx.work:work-*:2.4.0-alpha01
משוחרר. גרסה 2.4.0-alpha01 מכילה את הקומיטים האלה.
תכונות חדשות
WorkManager
התזמון של תהליכים בתהליך עכשיו יעיל יותר. בעבר, מתזמן התהליכים היה מריץ רק משימות שלא נדחו ושעמדו בדרישות. עכשיו, מתזמן התהליכים עוקב אחריWorkRequest
s שאולי יופעלו בעתיד, כוללPeriodicWorkRequest
s. גם המתזמן בתהליך לא מתחשב במגבלות התזמון (אבל הוא עדיין מוגבל לגודל שלExecutor
שמשמש את WorkManager). המשמעות היא שהאפליקציה יכולה עכשיו להריץ הרבה יותרWorkRequest
s כשהיא פועלת בחזית. (aosp/1185778)נוספה האפשרות לבקש מידע אבחוני מ-WorkManager באמצעות
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
. המידע הזה כולל הרבה פרטים שימושיים, למשל:- בקשות עבודה שהושלמו ב-24 השעות האחרונות.
- בקשות WorkRequest שנמצאות כרגע במצב RUNNING.
- בקשות עבודה מתוזמנות. (aosp/1235501)
כללי Lint חדשים שמבצעים אכיפה של:
- שימוש ב-
foregroundServiceType
הנכון כשמשתמשים בממשקי API שלsetForegroundAsync()
. (b/147873061, aosp/1215915) - ציון מזהי
JobScheduler
שצריך להשתמש בהם כשמשתמשים ישירות בממשקי API שלJobService
.WorkManager
(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
s ארוכים, אחרי חריגה מחלון ההפעלה של 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)
- תיקון של מצב מירוץ ב-ConstraintControllers. (aosp/1220100)
- שיפרנו את ניהול מחזור החיים של שירות שפועל בחזית עבור תהליכי Worker שפועלים לזמן רב. (aosp/1226295)
- שיפרנו את הניהול של ביטול ההתראות לעובדים שפועלים לזמן רב, כשמבטלים את העובד. (aosp/1228346)
גרסה 2.3.1
גרסה 2.3.1
5 בפברואר 2020
androidx.work:work-*:2.3.1
משוחרר. גרסה 2.3.1 מכילה את הקומיטים האלה.
תיקוני באגים
- ניהול טוב יותר של מחזור החיים של
Notification
s ל-Worker
s שפועלים לאורך זמן ומופעלים כש-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)
גרסה 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 כולל עכשיו חבילה של כללי lint נוספים כחלק מהספרייה, כדי לעזור לזהות באגים בשלב מוקדם.
גרסה 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)
- נוסף כלל Lint שמוודא שספק התוכן
androidx.work.impl.WorkManagerInitializer
מוסר מ-AndroidManifest.xml
כשמשתמשים באתחול לפי דרישה. (aosp/1167007) - נוספה אזהרת Lint כשמשתמשים ב-
enqueue()
בשבילPeriodicWorkRequest
במקוםenqueueUniquePeriodicWork()
. (aosp/1166032)
שינויים ב-API
- כשמשתמשים ב-
ListenableWorker.setForegroundAsync()
, צריך לציין אתnotificationId
שבו רוצים להשתמש ב-ForegroundInfo
. זהו שינוי שעלול לגרום לכשל. כך תוכלו להריץ כמהWorker
s ארוכים במקביל. WorkManager
גם מנהל טוב יותר את משך החיים שלNotification
שסופקו. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
תיקוני באגים
- תוקן באג בהטמעה של AlarmManager שגרם לכך שהתראות לא נוקו בצורה תקינה. (aosp/1156444)
- תוקן באג שבו רשימה ריקה של
WorkRequest
גרמה ליצירה של שרשרתWorkContinuation
שגויה. (b/142835274, aosp/1157051)
שינויים בתלות
- WorkManager משתמש עכשיו ב-Room 2.2.2.
גרסה 2.3.0-beta01
20 בנובמבר 2019
androidx.work:work-*:2.3.0-beta01
משוחרר. הגרסה 2.3.0-beta01 מכילה את הקומיטים האלה.
תכונות חדשות
- נוסף כלל חדש של lint שמונע שגיאות של מפתחים בגלל הטמעה שגויה של
androidx.work.Configuration.Provider
כשמשתמשים באתחול לפי דרישה. aosp/1164559
גרסה 2.3.0-alpha03
23 באוקטובר 2019
androidx.work:work-*:2.3.0-alpha03
משוחרר. גרסה 2.3.0-alpha03 מכילה את הקומיטים האלה.
תכונות חדשות
- נוסף
WorkManager.createCancelPendingIntent()
API שמקל על ביטול שלWorkRequest
s בלי צורך לרשום רכיב נוסף ב-AndroidManifest.xml
. ה-API הזה מאפשר לבטל בקלות מינויים ל-WorkRequest
מתוךNotification
. אנחנו צופים שהשימוש ב-API הזה יהיה בשילוב עם ממשקי ה-API החדשים של הפעלה ברקע בגרסה 2.3.0. - WorkManager תלוי עכשיו ב-
androidx.room:*:2.2.0
stable.
שינויים ב-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
s יכולים עכשיו להגדיר את ההתקדמות באמצעותsetProgressAsync()
API. בנוסף, הוספנו API תואם שלsuspend
-ingsetProgress
ב-CoroutineWorker
ו-setProgress
ב-RxWorker
שמחזירSingle<Void>
. באמצעות ממשקי ה-API החדשים האלה, עובדי Workers יכולים להעביר מידע על ההתקדמות באמצעותWorkInfo
שיש לו API תואם שלgetProgress
. (b/79481554)- ל-
Data
יש APIcontainsKey()
שאפשר להשתמש בו כדי לאמת שלנתוני הקלט ל-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, צריך להוסיף את התלות הזו לקובץ ה-Gradle כדי לקבל תמיכה ב-GCMNetworkManager באופן אוטומטי. אם Play Services לא זמין, WorkManager ימשיך לחזור ל-AlarmManager במכשירים ישנים יותר.
גרסה 2.2.0-rc01
30 ביולי 2019
androidx.work:work-*:2.2.0-rc01
משוחרר. כאן אפשר לראות את הקומיטים שכלולים בגרסה הזו.
תיקוני באגים
- תוקן באג בהטמעה של AlarmManager שגורם לשירות להיסגר לפני הזמן, וכתוצאה מכך ל-
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, צריך להוסיף את התלות הזו לקובץ ה-Gradle כדי לקבל תמיכה ב-GCMNetworkManager באופן אוטומטי. אם Play Services לא זמין, WorkManager ימשיך לחזור ל-AlarmManager במכשירים ישנים יותר.
תיקוני באגים
- תיקון ל-
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
- מעכשיו צריך להשתמש ב-Java 8 כדי להוריד את
work-runtime-ktx
. אם נתקלתם בבעיות, תוכלו להוסיף את הפרטים הבאים אלbuild.gradle
:kotlinOptions { jvmTarget = "1.8" }
- נוספה הפעלה לפי דרישה של WorkManager, שתיצור WorkManager
רק כשמתבצעת הפניה אליו. b/127497100 כדי להגדיר את הפרויקט לאתחול לפי דרישה:
- השבתת האתחול האוטומטי.
- מטמיעים את
Configuration.Provider
באובייקטApplication
המותאם אישית. - שינוי כל ההפניות אל
WorkManager.getInstance()
ל-WorkManager.getInstance(Context)
. כחלק מהשינוי הזה, הוצאנו משימוש אתWorkManager.getInstance()
. תמיד בטוח יותר להתקשר למספר החדשWorkManager.getInstance(Context)
, גם אם לא מבצעים הפעלה לפי דרישה.
- יש עכשיו תמיכה בהשהיות ראשוניות ב-
PeriodicWorkRequest
. אפשר להשתמש ב-method setInitialDelay
ב-PeriodicWorkRequest.Builder
כדי להגדיר השהיה ראשונית. b/111404867 - נוספה האפשרות להעביר הרשאה ל-
WorkerFactory
אחד או יותר רשומים באמצעותDelegatingWorkerFactory
. b/131435993 - נוספה האפשרות להתאים אישית את
Executor
שמשמש את WorkManager לכל הרישום הפנימי שלו באמצעותConfiguration.Builder.setTaskExecutor
. - הוספנו את האפשרות ליצור מחלקות
Worker
ו-ListenableWorker
שניתנות לבדיקת יחידות באמצעותTestWorkerBuilder
ו-TestListenableWorkerBuilder
בפריטwork-testing
.- שימו לב שספריית
work-testing
כוללת עכשיו את Kotlin כתלות, ומכילה כמה תוספים של Kotlin כברירת מחדל.
- שימו לב שספריית
- נוסף מספר הניסיונות להרצה אל
WorkInfo
. b/127290461 - מעכשיו אפשר לאחסן ולאחזר ב-
Data
בייטים ומערכים של בייטים. השינוי הזה לא משפיע על הגודל המקסימלי של אובייקטים מסוגData
. - WorkManager תלוי עכשיו ב-
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
s בגלל סיום התהליך. b/135272196
גרסה 2.1.0-beta01
13 ביוני 2019
androidx.work:work-*:2.1.0-beta01
משוחרר. כאן אפשר לראות את הקומיטים שכלולים בגרסה הזו.
תיקוני באגים
- WorkManager תלוי עכשיו ב-
Room 2.1.0
, וזה אמור לפתור כמה בעיות במסד הנתונים. - הוסרו פעולות קלט/פלט מסוימות של דיסק האתחול ב-thread הראשי.
- תוקן מצב פוטנציאלי של קיפאון במעקב אחר אילוצים. b/134361006
- בוטלו מראש משימות לא חוקיות שמשויכות ל-WorkManager. b/134058261
- הוספנו כמה קריאות הגנתיות לממשקי ה-API של JobScheduler למכשירים עם התנהגות לא תקינה.
גרסה 2.1.0-alpha03
5 ביוני 2019
androidx.work:*:2.1.0-alpha03
משוחרר.
תיקוני באגים
- שיפור התיעוד של
PeriodicWorkRequest
. -
WorkManagerTestInitHelper
משתמש עכשיו ב-executor הנכון ברקע לבדיקות. - תוקנו בעיות ב-SQLite כשמבצעים עסקאות גדולות בחלק מהמכשירים. (b/130182503)
- ההסתמכויות של WorkManager הן עכשיו יותר מפורטות. (b/133169148).
- פתרון בעיות ספציפיות ל-OEM בהטמעה של
JobScheduler
כשמתזמנים משימות באמצעות WorkManager. - שיפורים בתזמון מבוסס AlarmManager בנוגע לזמן החיים של שירותים, שבעבר גרמו לקריסות נדירות. (b/133313734)
גרסה 2.1.0-alpha02
16 במאי 2019
הגרסה WorkManager 2.1.0-alpha02 הושקה. הגרסה הזו מכילה כמה ממשקי API חדשים.
שינויים ב-API
יש עכשיו תמיכה בהשהיות ראשוניות ב-
PeriodicWorkRequest
. אפשר להשתמש ב-method setInitialDelay
ב-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
בפריט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.0.1-rc01 של 1.x.
תיקוני באגים
- בדיקות Robolectric פועלות עכשיו כמו שצריך עם WorkManager. b/122553577
- תוקן קראש במקרה קצה שקשור למעקב אחרי אילוצים שלא נוקו בממשקי API שלפני JobScheduler. b/129226383
- תוקן באג
StackOverflowError
שקשור לשרשרות ארוכות של עבודה. b/129091233 - עדכנו את התיעוד של
PeriodicWorkRequest
s כדי לציין שאין תמיכה בשעות גמישות ב-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 stable, אבל יש לה תלות ב-AndroidX. אחרי שהגרסה תגיע ל-2.0.0 יציבה, כדאי לכלול את הגרסה הזו. גרסאות 1.x מדור קודם יקבלו רק תיקוני באגים קריטיים. כל הפיתוח הפעיל יתבצע בגרסה 2.x.
Pre-AndroidX Dependencies
מסמכי עזר: 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
s are now correctly scheduled after an application crash. b/124546316
Worker
s שגורמים ל-Exception
לא מסומנים יותר כ-FAILED
ולא גורמים יותר לקריסת תהליך האפליקציה.
גרסה 1.0.0-rc01
14 בפברואר 2019
זו גרסה מועמדת להפצה של גרסה יציבה 1.0.0 של WorkManager. הגרסה הזו כוללת תיקון באג אחד.
תיקוני באגים
- ההטמעה שמבוססת על AlarmManager מכבדת עכשיו בצורה נכונה חלונות של
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 להטמעה שמבוססת על AlarmManager.
- תוקן מקרה שבו WorkManager לא עקב אחרי אילוצים בצורה נכונה כשנעשה שימוש בהטמעה שמבוססת על AlarmManager. b/123379508
- תוקן מקרה שבו WorkManager לא הצליח לנסות שוב לבצע עבודה בתהליך שהופסק כשנעשה שימוש בהטמעה שמבוססת על AlarmManager. b/123329850
- תוקן מקרה שגרם ל-WorkManager לדלוף Wakelocks כשמשתמשים בהטמעה שמבוססת על AlarmManager.
גרסה 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
. כך נמנעות התנגשויות של refactoring עם המחלקהResult
ברמה העליונה של Kotlin. זהו שינוי משמעותי ב-API. b/120564418
שינויים ב-API שעלולים לגרום לבעיות
- המחלקות
androidx.work.Result
הועברו להיות מחלקות פנימיות שלListenableWorker
.
גרסה 1.0.0-alpha12
5 בדצמבר 2018
בגרסה הזו יש כמה שינויים ב-API שעלולים לגרום לכשל. אפשר לעיין בקטע שינויים ב-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)
ווריאציות כדי לשפר את התמיכה בכתובות URL של תוכן שמופעלות לאט. b/119919774 - נוספה וריאציה
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
. השיטה הזו דורשת API 26. - נוספו שיטות הרחבה של Kotlin
Operation.await()
ו-ListenableFuture.await()
. - השם של
Operation.getException()
שונה ל-Operation.getThrowable()
. זהו שינוי שעלול לגרום לכשל. - המחלקות
ContentUriTriggers
והשיטות שמפנות אליהן כבר לא זמינות לשימוש ציבורי. זהו שינוי שעלול לגרום לכשל. - הסרנו את שאר ה-methods של varargs ב-
WorkManager
,WorkContinuation
ו-OneTimeWorkRequest
כדי לייעל את ה-API. כדי לפתור בעיות ב-build, אפשר להוסיף אתArrays.asList(...)
ל-varargs הקיימים. אנחנו עדיין כוללים גרסאות של כל שיטה עם ארגומנט יחיד. זהו שינוי שעלול לגרום לכשל. - הוסרו
WorkContinuation.combine(OneTimeWorkRequest, *)
וריאציות. הם הציגו API מבלבל, השיטות הקיימות שלcombine
מובנות יותר. זהו שינוי שעלול לגרום לכשל.
תיקוני באגים
- הטמעות בגרסאות קודמות ל-Marshmallow אמינות יותר עכשיו בשחזור ממצב של סיום תהליך של משימה שכבר פועלת.
-
LiveData
שנצפה דרךobserveForever
מתבצע מעקב דרך WorkManager. זהו backport של תיקון בספריית Room. b/74477406 -
Data.Builder.build()
זורק עכשיו חריגה אם האובייקט שעבר סריאליזציה חורג מהגודל המקסימלי שלו. בעבר, זה היה קורה רק בשרשור ברקע, ולא הייתה אפשרות לטפל בזה כמו שצריך. - ההבדל בין עבודה שהופסקה לבין עבודה שבוטלה מודגש יותר.
getWorkInfoById()
יחזירWorkInfo
עםCANCELLED
State
במהלךListenableWorker.onStopped()
. - התייחסות ל
null
Result
s כאל כשלים ב-ListenableWorker
. b/120362353 - תיקון ספקולטיבי ל-Shield Tablets עם 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
. - נוספו שיטות הרחבה של Kotlin
Operation.await()
ו-ListenableFuture.await()
. - השם של
Operation.getException()
שונה ל-Operation.getThrowable()
. - המחלקות
ContentUriTriggers
והשיטות שמפנות אליהן כבר לא זמינות לשימוש ציבורי. - הסרנו את שאר ה-methods של varargs ב-
WorkManager
,WorkContinuation
ו-OneTimeWorkRequest
כדי לייעל את ה-API. כדי לפתור בעיות ב-build, אפשר להוסיף אתArrays.asList(...)
ל-varargs הקיימים. אנחנו עדיין כוללים גרסאות של כל שיטה עם ארגומנט יחיד. - הוסרו
WorkContinuation.combine(OneTimeWorkRequest, *)
וריאציות. הם הציגו API מבלבל, השיטות הקיימות שלcombine
מובנות יותר.
גרסה 1.0.0-alpha11
8 בנובמבר 2018
המהדורה הזו כוללת הרבה שינויים שיהפכו ל-API יציב ב-beta
.
בגרסה הזו יש שינויים ב-API שעלולים לגרום לכשל. מידע נוסף זמין בקטע שינויים ב-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. - מוסיפים
WorkManager.enqueueUniqueWork()
API כדי להוסיף לתורOneTimeWorkRequest
ייחודיים בלי ליצורWorkContinuation
. - כל הווריאציות של השיטות
enqueue
ו-cancel
ב-WorkManager
מחזירות עכשיו סוג חדש שלOperation
. זהו שינוי שעלול לגרום לכשל. - כל הווריאציות של
enqueue
לא מקבלות יותר varargs עבורWorkRequest
s. זהו שינוי שעלול לגרום לכשל. במקום זאת, אפשר להשתמש באוספים. אפשר להשתמש ב-Arrays.asList()
כדי לשנות קוד קיים. עשינו את זה כדי לצמצם את שטח ה-API ואת מספר ה-method. - ניסיון לבצע
initialize
WorkManager
יותר מפעם אחת בכל תהליך יגרום עכשיו להצגתIllegalStateException
. זהו שינוי שעלול לגרום לכשל.
תיקוני באגים
-
WorkRequest.Builder
s בפריט המידעwork-runtime-ktx
משתמשים עכשיו ב-ListenableWorker
s. תיקונים 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
לא מקבלות יותר varargs עבורWorkRequest
s. - ניסיון לבצע
initialize
WorkManager
יותר מפעם אחת בכל תהליך יגרום עכשיו להצגתIllegalStateException
.
גרסה 1.0.0-alpha10
11 באוקטובר 2018
הגרסה הזו תומכת בעבודה אסינכרונית שנשלטת על ידי מפתחים. בגרסה הזו יש שינויים ב-API שעלולים לגרום לכשל. מידע נוסף זמין בקטע שינויים ב-API שעלולים לגרום לכשל בהמשך.
אנחנו צופים ש-WorkManager ייכנס לשלבים האחרונים של תקופת האלפא שלו. אנחנו מצפים שה-API יהיה יציב בגרסת הבטא, לכן נשמח לקבל ממך משוב במעקב הבעיות שלנו.
שינויים ב-API
- הוסרו כל השיטות והמחלקות הקודמות של
deprecated
, במיוחד בנאי ברירת המחדלWorker
. זהו שינוי ב-API שעלול לגרום לכשל. - השם
NonBlockingWorker
שונה ל-ListenableWorker
, ועכשיו זו כיתה ציבורית לא מוסתרת ומוכנה לשימוש.-
ListenableWorker
מספק גישה לשיטה מופשטת אחת,ListenableFuture<Payload> onStartWork()
, שמופעלת בשרשור הראשי. אתם צריכים להתחיל ולעבד את העבודה באופן אסינכרוני. בסיום, צריך לעדכן אתListenableFuture
בהתאם. הטמעות לדוגמה שלListenableFuture
מסופקות בחבילהFutures
ב-alpha02
(ראו בהמשך בקטעWorkManager
). -
Worker
מרחיב אתListenableWorker
וממשיך לפעול כמו קודם, עם שיטתResult doWork()
מופשטת. - העברנו כמה שיטות וחברים מ-
Worker
אלListenableWorker
. - בקרוב נספק יישומי הפניה ל-
ListenableWorker
שמשתמשים ב-Kotlin coroutines (אחרי שגרסאות היציבות יפורסמו) וב-RxJava2.
-
- הממשק
WorkerFactory
וההטמעה הקונקרטיתDefaultWorkerFactory
מוזגו למחלקה מופשטת שנקראתWorkerFactory
. ההטמעה מבטיחה שההתנהגות שמתבססת על רפלקציה כברירת מחדל תופעל כניסיון אחרון לכל מופעיWorkerFactory
שנוצרו על ידי המשתמש. זהו שינוי שעלול לגרום לכשל. - הוסרו
WorkManager.synchronous()
ו-WorkContinuation.synchronous()
וכל השיטות שקשורות אליהם. הוספנו אתListenableFuture<Void>
כסוג ההחזרה של הרבה שיטות ב-API. זהו שינוי ב-API שעלול לגרום לכשל.- עכשיו אפשר לקבל ולצפות באופן סינכרוני באמצעות
ListenableFuture
s. לדוגמה, הפקודהWorkManager.enqueue()
החזירה בעבר את הערךvoid
, אבל עכשיו היא מחזירה את הערךListenableFuture<Void>
. אחרי שהפעולה תושלם, תוכלו להתקשר אלListenableFuture.addListener(Runnable, Executor)
או אלListenableFuture.get()
כדי להריץ את הקוד. - שימו לב:
ListenableFuture
ההודעות האלה לא מציינות אם הפעולה הצליחה או נכשלה, אלא רק שהיא הסתיימה. עדיין צריך לשרשר שיטות של WorkManager כדי לגלות את המידע הזה. - אנחנו מתעלמים מקריאות
cancel()
באובייקטים האלה, כי הן מבלבלות וקשה להבין אותן (האם מבטלים את הפעולה או את העבודה שנובעת ממנה?). הפעולה הזו מתבצעת במסגרת החוזה שלFuture
. - כדי לשמור על שוויון עם ה-methods הסינכרוניים
getStatus*
, הוספנו וריאציות שלListenableFuture
ושינינו את השם של ה-methods הקיימים שהחזירוLiveData
כך שיכללו במפורש את המחרוזת LiveData (לדוגמה,getStatusesByIdLiveData(UUID)
). זהו שינוי משמעותי ב-API.
- עכשיו אפשר לקבל ולצפות באופן סינכרוני באמצעות
תיקוני באגים
- תוקנה הבעיה המוכרת מגרסה alpha09 שקשורה לקובצי
androidx-annotations.pro
כפולים. כדי להסיר את הפתרון העקיף מהערות הגרסה הקודמות, צריך למחוק אתexclude 'META-INF/proguard/androidx-annotations.pro'
מקובץ ה-Gradle. - נוספו הגדרות של proguard כדי לשמור על בנאי חדש של
Worker
. b/116296569 - תוקנה בעיה פוטנציאלית
NullPointerException
במצב race condition שבו העבודהREPLACE
ה. b/116253486 ו-b/116677275 - הפרמטר
WorkContinuation.combine()
מקבל עכשיו ערך אחד או יותר שלWorkContinuation
במקום שניים או יותר. b/117266752
שינויים ב-API שעלולים לגרום לבעיות
- הוסרו כל השיטות והמחלקות הקודמות של
deprecated
, במיוחד בנאי ברירת המחדלWorker
. - הממשק
WorkerFactory
וההטמעה הקונקרטיתDefaultWorkerFactory
מוזגו למחלקה מופשטת שנקראתWorkerFactory
. - הוסרו
WorkManager.synchronous()
ו-WorkContinuation.synchronous()
. - השיטות
WorkManager.getStatus*()
מחזירות עכשיוListenableFuture
.WorkManager.getStatus*LiveData()
החזרתLiveData
.
גרסה 1.0.0-alpha09
19 בספטמבר 2018
בעיה ידועה
אם נתקלתם בבעיה הבאה: "נמצא יותר מקובץ אחד עם נתיב בלתי תלוי במערכת ההפעלה 'META-INF/proguard/androidx-annotations.pro'", תוכלו להוסיף את הקוד הבא לקובץ ה-Gradle שלכם כפתרון זמני עד שנפתור את הבעיה בגרסה alpha10:
מגניב
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, ה-constructor שמוגדר כברירת מחדל יוסר.
- הקונסטרוקטורים שמוגדרים כברירת מחדל עבור
- התחלנו להשתמש בפריט החדש
ListenableFuture
באופן פנימי (ללא תלות ב-Guava). בגרסאות הקרובות של ה-API, נוסיף את ListenableFutures. השינוי הזה יתמוך בהסרת ההסתרה שלNonBlockingWorker
בעתיד. - הוספנו אפשרות להפעיל עבודה מתוזמנת ב-
TestDriver
דרךTestDriver.setInitialDelayMet(UUID)
ו-TestDriver.setPeriodDelayMet(UUID)
. b/113360060
שינויי תוכנה שעלולים לגרום לכשלים
- השימוש בבוני ברירת המחדל
Worker
ו-NonBlockingWorker
הוצא משימוש. מומלץ לעבור לקונסטרוקטור החדש בהקדם האפשרי. בגרסאות עתידיות, בנאי ברירת המחדל יוסר.
גרסה 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.Builder#build()
, צריך ליצורWorkRequest
ייחודיים. 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
. זה כולל את ה-constructorConstraints
,Data.toByteArray()
ו-Data.fromByteArray(byte[])
. זהו שינוי ב-API שעלול לגרום לכשל.
תיקוני באגים
- WorkManager כבר לא מבצע עבודה במהלך מקרים מוכרים של גיבוי אוטומטי. יכול להיות שהדבר גרם לקריסה. b/110564377
- תוקנה בעיה שגרמה לתזמון כפול של
PeriodicWorkRequest
כשמשתמשים ב-JobScheduler
. b/110798652 - תוקנה בעיה שבה פקודות
PeriodicWorkRequest
לא מופעלות בצורה תקינה אחרי שהמכשיר נכנס למצב שינה. b/111469837 - תוקנה בעיה שקשורה לעיכובים ראשוניים בשימוש ב-Firebase JobDispatcher. b/111141023
- תוקנו כמה בעיות אפשריות של תנאי מירוץ ובעיות תזמון.
- פינה בצורה נכונה
BroadcastReceiver
שלא היו נחוצים יותר. - בוצעה אופטימיזציה של ביצועי התזמון מחדש כשאפליקציות מופעלות מחדש אחרי שהן נסגרו בכוח.
- מותר לקרוא ל-
TestScheduler.setAllConstraintsMet(UUID)
לפני או אחרי הוספתWorkRequest
לתור. b/111238024
שינויי תוכנה שעלולים לגרום לכשלים
- הערת המידע על
WorkManager.getInstance()
היא עכשיו@NonNull
במקום@Nullable
. - השתנה החתימה של
Data.getString()
כך שהיא כבר לא מקבלת ערך ברירת מחדל (היאnull
באופן מרומז). - סימנתי כמה שיטות שנדרשות רק לשימוש פנימי בסימן
@hide
. זה כולל את ה-constructorConstraints
,Data.toByteArray()
ו-Data.fromByteArray(byte[])
.
גרסה 1.0.0-alpha04
26 ביוני 2018
תיקוני באגים
- התזמון של
PeriodicWorkRequest
s מתבצע עכשיו מחדש בצורה נכונה כשמשתמשים בהטמעה שמבוססת עלAlarmManager
. - תוקנה בעיה פוטנציאלית של ANR כשמתזמנים מחדש את כל העובדים אחרי עצירה בכוח או הפעלה מחדש. b/110507716
- הוספנו הערות לגבי אפשרות של ערך null לממשקי API שונים של WorkManager. b/110344065
- חריגים שלא זוהו יתועדו במהלך ההפעלה של Worker. b/109900862
- אפשר לבצע העברות הרסניות של מסדי נתונים במקרה שמחליטים לחזור לגרסה קודמת של WorkManager. b/74633270
- תוקנה קריסה של העברה אם נוצרים תגים משתמעים כפולים. זו בעיה נדירה מאוד שמתרחשת רק אם השתמשתם בעצמכם באותו פורמט של תג משתמע.
גרסה 1.0.0-alpha03
19 ביוני 2018
תיקוני באגים
תוקן מרוץ תהליכים בהטמעה שמבוססת על
AlarmManager
. b/80346526.תוקנה בעיה שגרמה לשכפול משימות כשמשתמשים ב-
JobScheduler
אחרי הפעלה מחדש של המכשיר.משימות עם טריגרים של 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
s ייחודיים. b/79600647 -
WorkManager.cancelAllWork()
מבטל את כל המינויים ל-Worker
. ספריות שתלויות ב-WorkManager
יכולות לשלוח שאילתה כדי לדעת מתי בוצעה הקריאה האחרונה לשיטה הזו באמצעותWorkManager.getLastCancelAllTimeMillis()
, כדי לבצע ניקוי נוסף של מצב פנימי. - נוסף
WorkManager.pruneWork()
כדי להסיר משימות שהושלמו ממסד הנתונים הפנימי. b/79950952, b/109710758
שינויים בהתנהגות
- נוסף תג מרומז לכל
WorkRequest
, שהוא שם המחלקה המלא שלWorker
. כך אפשר להסירWorkRequest
בליtag
או כשה-id
לא זמין. b/109572351
שינויי תוכנה שעלולים לגרום לכשלים
- השם של
Worker.WorkerResult
שונה ל-Worker.Result
. - ל-
Worker.onStopped
יש עכשיו פרמטר additionalisCancelled
שמוגדר לערךtrue
כשהמינויWorker
בוטל באופן מפורש.
גרסה 1.0.0-alpha02
24 במאי 2018
תיקוני באגים
- תוקן
NullPointerException
ב-State.isFinished()
. b/79550068 - תוקנה בעיה שגרמה לתזמון מחדש של
Worker
ב-Application.onCreate()
. b/79660657 - תוקנה בעיה שבה אפשר היה לתזמן יותר עבודה מהמותר במערכת ההפעלה. b/79497378
- העברנו את הניקוי של חסימות מצב שינה שמשויכות ל-
Worker
s לשרשור ברקע. - ההטמעה של
AlarmManager
מנקה עכשיו את הנתונים בצורה נכונה כשכל העבודה בהמתנה מסתיימת. - תוקנו שאילתות SQL לניקוי שהשפיעו על לוקאלים שאינם באנגלית. b/80065360
- נוספה תמיכה ב-
float
ב-Data
. b/79443878 - הפונקציה
Data.Builder.putAll()
מחזירה עכשיו מופע שלBuilder
. b/79699162 - עוד תיקונים ב-javadoc ובתיעוד. b/79691663
שינויים ב-API
Worker
s יכולים להגיב כשמפסיקים אותם. אפשר להשתמש ב-Worker.isStopped()
כדי לבדוק אםWorker
הופסק. אפשר להשתמש ב-Worker.onStopped()
כדי לבצע פעולות ניקוי קלות.-
Worker.getTags()
API מחזיר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
.