WorkManager
העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסה אלפא |
---|---|---|---|---|
30 באוקטובר 2024 | 2.9.1 | - | - | - |
הצהרת יחסי תלות
כדי להוסיף תלות ב-WorkManager, צריך להוסיף את מאגר Maven של Google לפרויקט:
מוסיפים את יחסי התלות של הארטיפקטים הנדרשים בקובץ build.gradle
של האפליקציה או המודול:
Groovy
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. אם נתקלתם בבעיות חדשות או שיש לכם רעיונות לשיפור הספרייה הזו, נשמח לשמוע מכם. לפני שיוצרים בעיה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להצביע לבעיה קיימת, לוחצים על לחצן הכוכב.
מידע נוסף זמין במסמכי התיעוד של Issue Tracker.
גרסה 2.10
גרסה 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
נוסף כדי לשלוט במרכז ההפצה שבו מתבצע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) ובכל גרסאות ה-build כשמשתמשים ב-AGP 8.1 ואילך (למשל, D8 גרסה 8.1). ללקוחות שלא משתמשים ב-AGP מומלץ לעדכן לגרסה D8 ואילך. למידע נוסף, מומלץ לעיין במאמר הזה. (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
נוסף כדי לשלוט במרכז ההפצה שבו מתבצע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
מספקות מידע נכון לגבי האפשרות של ערך לאפס. יכול להיות שיהיה צורך בשינויים בקוד המקור של הלקוחות, אם ההנחות לגבי יכולת האיפוס של הערכים בקוד הזה היו שגויות. (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)
גרסה
29 בנובמבר 2023
androidx.work:work-*:2.9.0
משוחרר. גרסה 2.9.0 כוללת את ההתחייבויות האלה.
שינויים חשובים מאז גרסה 2.8.0
- יכולת תצפית באמצעות
Flow
. במקוםLiveData
, אפשר עכשיו לעקוב אחרי ההתקדמות של העובד באמצעות Flow דרךWorkManager.getWorkInfosFlow
ושיטות דומות. - עכשיו
WorkManager
מספק רמז לסיבה שבגללה הופסק עובד. אפשר לחפש את השאילתה מהעובד עצמו בשיטהgetStopReason()
או מ-WorkInfo
דרךgetStopReason()
. - תזמון מדויק של עובדים תקופתיים באמצעות
setNextScheduleTimeOverride
. כך אפשר לחשב באופן דינמי את לוח הזמנים הבא של העבודה המחזורית, וליישם תכונות מתקדמות כמו זמני רענון מותאמים, התנהגות מותאמת אישית של ניסיונות חוזרים או הפעלה של עובד של פיד החדשות לפני שהמשתמש מתעורר כל בוקר בלי שיהיו שינויים לא צפויים. כדי להימנע מביטול של עובד שפועל כרגע בזמן תזמון של העובד הבא, צריך להשתמש ב-ExistingPeriodicWorkPolicy.UPDATE
בשילוב עם השיטות האלה. - בדיקה של WorkManager עם תהליכים תואמים בסביבת הייצור. אפשר להשתמש ב-
ExecutorsMode.PRESERVE_EXECUTORS
ב-initializeTestWorkManager
כדי לשמור את המבצעים שהוגדרו ב-Configuration
ולהשתמש בשרשור הראשי האמיתי. - ממשקי API של קורוטינים כמו
CoroutineWorker
הועברו מהארטיפקט הנוסף work-runtime-ktx לארטיפקט הראשי work-runtime. הארטיפקט work-runtime-ktx ריק עכשיו.
שינויים ב-API
stopReason
נוסף לקבוצהWorkInfo
. הוא הופך אתstopReason
לזמין אחרי שהעובד פועל. אפשר להיעזר בו בדיווחstopReason
, באופן שמיש, כי לאחר עצירה של עובד, אפליקציה עצמה עלולה להרוג במהירות. (I21386)- מאפשרים להגדיר את
Clock
דרך קובץ התצורה ולהשתמש בו כדי לקבוע את רצף הביצוע של בדיקות Worker. (Ic586e) - נוספה ל-
ListenableWorker
השיטהgetStopReason()
שמספקת רמז לגבי הסיבה לכך שהעובד הופסק. (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
. הן תואמות עכשיו להערות התואמות על ה-setters ב-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)
- נוספה ל-
ListenableWorker
השיטהgetStopReason()
שמספקת רמז לגבי הסיבה לכך שהעובד הופסק. (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 מכילה את ההוספות האלה.
תכונות חדשות
- יכולת תצפית באמצעות
Flow
. במקוםLiveData
, אפשר עכשיו לעקוב אחרי ההתקדמות של העובד באמצעות Flow דרךWorkManager.getWorkInfosFlow
ושיטות דומות. - תזמון מדויק של עובדים תקופתיים באמצעות
setNextScheduleTimeOverride
. כך ניתן לחשב באופן דינמי את לוח הזמנים התקופתי הבא לעבודה, שיכול לשמש להטמעת תכונות מתקדמות כמו זמני רענון מותאמים, התנהגות מותאמת אישית של ניסיונות חוזרים או הפעלת קובץ חדשותי בפיד לפני שהמשתמש מתעורר בכל בוקר ללא דריפט. כדי להימנע מביטול של עובד שפועל כרגע בזמן תזמון של העובד הבא, צריך להשתמש ב-ExistingPeriodicWorkPolicy.UPDATE
בשילוב עם השיטות האלה. - בדיקה של
WorkManager
עם תהליך עיבוד תגובה (threading) תואם לייצור. אפשר להשתמש ב-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) - נוספה השיטה observe workers via Flows באמצעות השיטות
getWorkInfosByTagFlow
, getWorkInfoByIdFlow
, getWorkInfosForUniqueWorkFlow
, getWorkInfosFlow
(If122a) - נוספו הערות
@RequiresApi(...)
חסרות למאפיינים ולמגדירים של אילוצים. הן תואמות עכשיו להערות התואמות על ה-setters ב-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
הקיים, אבל פחות פולשני: הוא לא מבטל עובד אם הוא פועל כרגע, והוא שומר את זמן ההוספה לתור – העיכוב והתקופות הראשוניות מחושבים מזמן ההוספה המקורי לתור, ולא מזמן העדכון. הוצאנו משימוש את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
הותחל. בנוסף, נוסף ממשק 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 ל-SDKs עתידיים (Iafd82, b/207528937)
- הוספה של
getForegroundInfo
אלWorker
. (Ic1ead) - נוספו שיטות עזר
WorkQuery.fromIds
ליצירת WorkQuery ישירות מ-ids. (Ie5bdf, b/199919736) - ל-RxWorker יש עכשיו את
setForeground
שמחזיר אתCompletable
, שאפשר להשתמש בו במקוםsetForegroundInfoAsync
שמחזיר אתListenableFuture
. (I85156) - ב-RxWorker ל-RxJava 2 יש עכשיו
getForegroundInfo
שמחזירSingle
שאפשר להשתמש בו במקוםgetForegroundInfoAsync
שמחזירListenableFuture
. (I21c91, b/203851459) - ב-RxWorker ל-RxJava 3 יש עכשיו
getForegroundInfo
שמחזירSingle
שאפשר להשתמש בו במקוםgetForegroundInfoAsync
שמחזירListenableFuture
. (I1ca8a) - ל-RxWorker יש עכשיו את
setForeground
שמחזיר אתCompletable
, שאפשר להשתמש בו במקוםsetForegroundInfoAsync
שמחזיר אתListenableFuture
. (I992a3, b/203851459)
תיקוני באגים
- להפיץ ביטולים ב-
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
גרסה
13 באוקטובר 2021
androidx.work:work-*:2.7.0
משוחרר. גרסה 2.7.0 כוללת את ההצהרות האלה.
שינויים חשובים מאז גרסה 2.6.0
ב-WorkManager יש API חדש של
WorkRequest.Builder.setExpedited(...)
שעוזר להתמודד עם ההגבלות על שירותים שפועלים בחזית ב-Android 12.כשמשתמשים ב-
setExpedited(...)
, WorkManager מעביר משימות מהירות ל-JobScheduler החל מגרסה 12 של Android, תוך שמירה על תאימות לאחור לגרסאות קודמות של 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
- צריך להסיר את ממשקי ה-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()
כבר לא הוצאה משימוש. - מומלץ להשתמש ב-
WorkRequest.Builder.setExpedited(...)
API כשהדבר אפשרי. כדי לתמוך טוב יותר במצבים שבהם האפליקציה לא כפופה להגבלות על שירותים שפועלים בחזית, מפתחים יכולים להשתמש ב-API ListenableWorker.setForegroundAsync()
. - אם
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
: מוסיף תמיכה לעובדים שיכולים לפעול בכל תהליך. (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/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
אחרים יוכלו להשתמש בהם כיחסי תלות. (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
יום + משך הזמן שצוין ב-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
במהלך הניסיון לבטל את הקישור לתהליך מת. (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 מכילה את ההצהרות האלה.
תכונות חדשות
- מוסיפים API ל-WorkQuery כדי שאפשר יהיה להשתמש ב-
id
כדי לשלוח שאילתות ל-WorkInfo
. (aosp/1412372, b/157335295) - WorkManager תומך טוב יותר באפליקציות שמשתמשות בכמה תהליכים באמצעות ארטיפקט חדש (
androidx.work:work-multiprocess:*
). הארטיפקט החדש עוזר לפתור כמה בעיות שאפליקציות גדולות נתקלות בהן, כולל:- בדרך כלל, צריך לאתחל את WorkManager בכל תהליך של אפליקציה. זה לא טוב כי יש עלייה במתח ב-SQLite, וכתוצאה מכך נוצרות בעיות אחרות. עכשיו יש ל-WorkManager ממשקי API חדשים שאפשר להשתמש בהם כדי להגדיר תהליך אפליקציה ראשי באמצעות
Configuration#setDefaultProcessName(processName)
. השדהprocessName
הוא שם תהליך מלא שנראה כך:packageName:processName
(למשל,com.example:remote
). - קבוצה של ממשקי API חדשים:
RemoteWorkManager
ו-RemoteWorkContinuation
עדenqueue
,cancel
ו-query
לבקשות עבודה. ממשקי ה-API האלה לא כוללים וריאנטים שלLiveData
כדי למנוע תחרות של SQLite בין תהליכים מרובים. כל הקריאות ל-enqueue
, ל-cancel
ול-query
מועברות לתהליך אפליקציה של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
s במהלך מעקב אחר מצב הרשת במכשירים מסוימים. (aosp/1396969)
תרומה חיצונית
- תיקון של מסמכי התיעוד של
ArrayCreatingInputMerger
על ידי Zac Sweers (github/43).
גרסה
גרסה
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) - עכשיו יש תמיכה ב-RxJava 3 ב-WorkManager. כדי להשתמש ב-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 השעות האחרונות.
- בקשות WorkRequest שפועלות כרגע.
- בקשות WorkRequest מתוזמנות. (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 צריך להשתמש כשמשתמשים ישירות בממשקי ה-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 מכילה את התחייבויות אלה.
תכונות חדשות
- עכשיו יש תמיכה ב-RxJava 3 ב-WorkManager. כדי להשתמש ב-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)
תיקוני באגים
- תוקן כלל האיתור של שגיאות בקוד (lint) שבודק משכי זמן לא חוקיים של מרווחי זמן ל-
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 השעות האחרונות.
- בקשות WorkRequest שפועלות כרגע.
- בקשות WorkRequest מתוזמנות. (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
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)
- שיפור ניהול מחזור החיים של שירותים שפועלים בחזית (foreground) ל-Workers שפועלים לאורך זמן. (aosp/1226295)
- שיפור הניהול של ביטול התראות ל-Workers ארוכי טווח לאחר ביטול ה-Worker. (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)- נוספו כללי איתור שגיאות בקוד כדי לוודא ש-
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)
- נוספ כלל איתור שגיאות בקוד (lint) שמבטיח שספק התוכן
androidx.work.impl.WorkManagerInitializer
יוסר מה-AndroidManifest.xml
כשמשתמשים בהפעלה על פי דרישה. (aosp/1167007) - נוספה אזהרה על שגיאות בקוד כשמשתמשים ב-
enqueue()
ל-PeriodicWorkRequest
במקום ב-enqueueUniquePeriodicWork()
. (aosp/1166032)
שינויים ב-API
- עכשיו צריך לציין את
notificationId
לשימוש ב-ListenableWorker.setForegroundAsync()
ב-ForegroundInfo
. זהו שינוי תוכנה שעלול לגרום לכשלים. כך אפשר להריץ כמה משימותWorker
ארוכות במקביל. ב-WorkManager
יש גם ניהול טוב יותר של משכי החיים של ה-Notification
שסופקו. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
תיקוני באגים
- תוקן באג בהטמעה של AlarmManager, שבו ההתראות לא נמחקו כראוי. (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 מכילה את ההצהרות האלה.
תכונות חדשות
- הוספנו כלל חדש של איתור שגיאות בקוד (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
s מ-Notification
s. אנחנו צופים שהתכונה הזו תוצג יחד עם ממשקי ה-API החדשים לחזית במהדורה 2.3.0. - עכשיו WorkManager תלוי בגרסה יציבה של
androidx.room:*:2.2.0
.
שינויים ב-API
- השם של
ForegroundInfo.getNotificationType()
שונה ל-ForegroundInfo.getForegroundServiceType()
כדי לשמור על עקביות עם ממשקי ה-API של הפלטפורמה הבסיסית. (b/142729893, aosp/1143316)
תיקוני באגים
- תוקן באג שנגרם כתוצאה משיחה מיותרת ל-
setTransactionSuccessful()
מחוץ לעסקה. זה קורה בהעברות נדירות. (b/142580433, aosp/1141737)
גרסה 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)
תיקוני באגים
- כשמספר ה-
WorkRequest
שנמצאים בתור מתקרב למגבלות התזמון, WorkManager מתזמן את העבודה בצורה הוגנת. (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
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
תכונות חדשות
- עכשיו יש ל-
ListenableWorker
אפשרות להגדיר התקדמות באמצעות ה-API שלsetProgressAsync()
. הוספנו גם API תואם שלsuspend
-ingsetProgress
ב-CoroutineWorker
ו-setProgress
ב-RxWorker
שמחזירSingle<Void>
. באמצעות ממשקי ה-API החדשים האלה, העובדים יכולים להעביר מידע על ההתקדמות דרך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)
גרסה
גרסה
15 באוגוסט 2019
androidx.work:work-*:2.2.0
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
הגרסה הזו זהה לגרסה 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
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
תיקוני באגים
- הסרה של תלות לא מכוונת ב-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)
גרסה
גרסה
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
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
תיקוני באגים
- תוקן באג שגורם לאפליקציה לקרוס במהלך ביצוע משימות באמצעות
JobScheduler
בזמן שמתבצע גיבוי b/135858602.
גרסה 2.1.0-beta02
20 ביוני 2019
androidx.work:work-*:2.1.0-beta02
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
תיקוני באגים
TestListenableWorkerBuilder
משתמש עכשיו ב-WorkerFactory
הנכון כשיוצר מכונות שלListenableWorker
. b/135275844- תוקן באג שגרם לתנודות בחלונות הביצוע של
WorkRequest
s עקב מוות של תהליך. b/135272196
גרסה 2.1.0-beta01
13 ביוני 2019
androidx.work:work-*:2.1.0-beta01
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
תיקוני באגים
- שירות 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
גרסה 2.1.0-alpha02 של WorkManager זמינה. הגרסה הזו כוללת כמה ממשקי 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
גרסה 2.1.0-alpha01 של WorkManager זמינה. הגרסה הזו כוללת כמה ממשקי 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
גרסה 2.0.1 של WorkManager זמינה. הגרסה הזו זהה ל-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
גרסה 2.0.0 של WorkManager זמינה. הגרסה הזו זהה ל-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
גרסה 1.0.1 של WorkManager זמינה. הגרסה הזו זהה ל-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/124546316Worker
s שמפעיליםException
לא מסומן עכשיו כראוי בתורFAILED
והם כבר לא גורמים לקריסה של תהליך האפליקציה.
גרסה 1.0.0-rc01
14 בפברואר 2019
זוהי גרסה מועמדת להפצה של הגרסה היציבה 1.0.0 של WorkManager. הגרסה הזו כוללת תיקון באג אחד.
תיקוני באגים
- ההטמעה שמבוססת על AlarmManager מתייחסת עכשיו בצורה נכונה לחלונות
flex
של בקשות PeriodicWork. 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 באמצעות יישום שמבוסס על AlertManager. b/123329850
- תוקנה בעיה שגרמה ל-WorkManager לדלוף Wakelocks כשמשתמשים בהטמעה שמבוססת על AlarmManager.
גרסה 1.0.0-beta03
25 בינואר 2019
הגרסה הזו כוללת כמה תיקוני באגים.
תיקוני באגים
- הוספנו רגרסיה
1.0.0-beta02
שגרמה לכך שהעבודה לא תתבצע בצורה תקינה במקרים מסוימים. b/123211993 - תוקנה בעיה שבה העבודה לא מילאה כראוי את לוחות הזמנים של ההשהיה. b/122881597
- תוקנה בעיה ב-
ConcurrentModificationException
במכשירים עם Android 5.1 (API 22) ומטה. זוהי המשך לתיקון שפורסם ב-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. אפשר לעיין בקטע שינויים קיצוניים ב-API בהמשך. סביר להניח שהגרסה הזו תפורסם כגרסת הבטא הראשונה שלנו. alpha12
מכיל גם עדכונים נרחבים במסמכי התיעוד.
שינויים ב-API
- פריט מידע חדש,
work-rxjava2
, מציג אתRxWorker
. זהוListenableWorker
שמצפה ל-Single<Payload>
. - התמיכה ב-Firebase JobDispatcher הוסרה בגלל ההוצאה משימוש הקרובה שלו. המשמעות היא שהארטיפקט
work-firebase
לא יתעדכן יותר לקראת גרסת הבטא. נבדוק אפשרות להוסיף חלופה בעתיד. - שילבנו את
Payload
אלResult
.Result
היא עכשיו 'כיתה אטומה' עם שלוש הטמעות קונקרטיות, שאפשר לקבל באמצעותResult.success()
(אוResult.success(Data)
),Result.failure()
(אוResult.failure(Data)
) ו-Result.retry()
. עכשיו הערך של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)
. השיטה הזו דורשת 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. זוהי גרסה קודמת של תיקון בספריית Room. 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
s אין שיטות 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 שעלולים לגרום לכשל. אפשר לעיין בקטע שינויים ב-API שעלולים לגרום לכשל בהמשך.
שינויים ב-API
work-runtime-ktx
מציגCoroutineWorker
חדש.- השם של
WorkStatus
שונה ל-WorkInfo
. כל הווריאנטים התואמים של שיטתgetStatus
שונו לשמות התואמים של הווריאנטים שלgetWorkInfo
. זהו שינוי שעלול לגרום לכשל. ListenableWorker.onStopped()
לא מקבל יותר ארגומנט בוליאני שמייצג אם ה-WorkRequest
בוטל.WorkManager
כבר לא מבדיל בין שתי האפשרויות האלה. זהו שינוי שעלול לגרום לכשל.- השם של החבילה
androidx.work.test
השתנה לחבילהandroidx.work.testing
. זהו שינוי תוכנה שעלול לגרום לכשלים. - ה-setters ב-
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 ואת מספר השיטות. - ניסיון
initialize
WorkManager
יותר מפעם אחת לכל תהליך יוביל עכשיו ל-IllegalStateException
. זהו שינוי שעלול לגרום לכשל.
תיקוני באגים
- עכשיו נעשה שימוש ב-
ListenableWorker
ב-WorkRequest.Builder
שבארטיפקט.work-runtime-ktx
תיקון הבאג 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
. - ה-setters ב-
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 שעלולים לגרום לכשל. אפשר לעיין בקטע שינויים ב-API שעלולים לגרום לכשל בהמשך.
אנחנו צופים ש-WorkManager ייכנס לשלבים האחרונים של תקופת ה-alpha. אנחנו מצפים שה-API יהיה יציב בגרסת הבטא, לכן מומלץ להקדיש קצת זמן לשליחת משוב במערכת למעקב אחר בעיות.
שינויים ב-API
- הסרת כל ה-methods והמחלקות
deprecated
, ובמיוחד את ה-constructor של ברירת המחדלWorker
. זהו שינוי תוכנה שעלול לגרום לכשל ב-API. - שיניתם את השם של
NonBlockingWorker
ל-ListenableWorker
, וכעת זוהי כיתה ציבורית גלויה ומוכנה לשימוש.ListenableWorker
מספק גישה לשיטה מופשטת אחת,ListenableFuture<Payload> onStartWork()
, שנקראת בשרשור הראשי. אתם אחראים להתחיל את העבודה ולעבד אותה באופן אסינכרוני. בסיום, צריך לעדכן אתListenableFuture
בהתאם. הטמעות עזר שלListenableFuture
s זמינות בחבילהFutures
ב-alpha02
(ראו בהמשך הקטעWorkManager
).Worker
נרחיב אתListenableWorker
ועדיין פועל כמו קודם, באמצעות שיטה מופשטתResult doWork()
.- שינינו את הסדר של חלק מהשיטות והחברים מ-
Worker
ל-ListenableWorker
. - בקרוב נשיק הטמעות לדוגמה של
ListenableWorker
s שמשתמשים ב-Kotlin coroutines (אחרי שהגרסאות היציבות ייפרסו) וב-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. - נוספו הגדרות של ProGuard כדי לשמור על המבנה החדש של ה-constructor של
Worker
. b/116296569 - תיקון
NullPointerException
פוטנציאלי במרוץ תהליכים שבו העבודהREPLACE
d. 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
בעיה ידועה
אם נתקלת בבעיה הבאה: "More than one file was found with OS independent path '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
- הוספנו כמה תיקונים לשגיאות באילוצים של מפתחות זרים שנובעות מתנאי מרוץ (race condition). b/114705286
ConstraintTrackingWorker.onStopped(boolean)
להענקת גישה מבצעת קריאות ל-Worker
הבסיסי. b/114125093- אכיפה נכונה של השהיה מינימלית לפני ניסיון חוזר (backoff) ב-Firebase JobDispatcher. b/113304626
- שיפורים בשרשור מבטיחים עבודה פנימית בספרייה.
- תיקון בעיה פוטנציאלית בביטול כפילויות של
LiveData
באופן פנימי.
שינויים ב-API
- עכשיו אפשר ליצור מכונות
Worker
משלכם בסביבת זמן הריצה על ידי ציוןWorkerFactory
כחלק מ-WorkManager.Configuration
. המפעל החלופי הואDefaultWorkerFactory
, והוא תואם להתנהגות של גרסאות קודמות של WorkManager.- ה-constructors שמוגדרים כברירת מחדל ל-
Worker
ול-NonBlockingWorker
מסומנים עכשיו כמיושנים. יש להשתמש ב-constructor החדש (Worker(Context, WorkerParameters)
) ולקרוא ל-super(Context, WorkerParameters)
. בגרסאות עתידיות של WorkManager, ה-constructor שמוגדר כברירת מחדל יוסר.
- ה-constructors שמוגדרים כברירת מחדל ל-
- התחלנו להשתמש באופן פנימי ב-artifact החדש של
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 - תיקון מצב מרוץ (race condition) במעקב אחר אילוצים שגורם לקריסה של
WorkManager
. googlecodelabs/android-workmanager/issues/56 - יוצרים ערכים ייחודיים של
WorkRequest
כשמשתמשים ב-WorkRequest.Builder#build()
. b/111408337 - מומלץ להפעיל את השימוש ב-
RescheduleReceiver
רק כשישWorkRequest
שזקוקים לכך. b/111765853
גרסה 1.0.0-alpha05
24 ביולי 2018
שינויים ב-API
- עכשיו הערה של
@NonNull
מופיעה ב-WorkManager.getInstance()
במקום הערה של@Nullable
. במקום זאת, אם האובייקט מסוג singleton לא יופעל כראוי במקרים של הפעלה ידנית, השיטה תזרוק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
s כשמשתמשים ב-JobScheduler
. b/110798652 - תוקנה בעיה שבה
PeriodicWorkRequest
לא פועלים כראוי אחרי מצב שינה של המכשיר. b/111469837 - תוקנה בעיה עם עיכובים ראשוניים בשימוש ב-Firebase JobDispatcher. b/111141023
- תוקנו כמה בעיות שקשורות לתנאי מרוץ ולתזמון.
- פינית
BroadcastReceiver
פריטים שלא היה בהם צורך יותר. - ביצועים אופטימליים של תזמון מחדש כשאפליקציות מופעלות מחדש לאחר סגירה מאולצת.
- אישרת את הקריאה אל
TestScheduler.setAllConstraintsMet(UUID)
לפני או אחרי הכניסה שלWorkRequest
הנתון לתור. b/111238024
שינויים שעלולים לגרום לכשלים
- עכשיו הערה של
@NonNull
מופיעה ב-WorkManager.getInstance()
במקום הערה של@Nullable
. - החתימה של
Data.getString()
שונתה, כך שהיא לא מקבלת יותר ערך ברירת מחדל (הוא לא מוגדר באופן מרומזnull
). - סימנו את השיטות שדרושות לשימוש פנימי בלבד בתווית
@hide
. כולל את המבנהConstraints
, אתData.toByteArray()
ואתData.fromByteArray(byte[])
.
גרסה 1.0.0-alpha04
26 ביוני 2018
תיקוני באגים
PeriodicWorkRequest
s מתוזמנים עכשיו בצורה נכונה כשמשתמשים בהטמעה שמבוססת עלAlarmManager
.- תוקנה בעיה פוטנציאלית של ANR כשמגדירים מחדש את כל העובדים אחרי עצירה בכוח או הפעלה מחדש. b/110507716
- הוספנו הערות לגבי יכולת האפסיות לממשקי 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/79600647WorkManager.cancelAllWork()
מבטל את כלWorker
של. ספריות שתלויות ב-WorkManager
יכולות לשלוח שאילתה לגבי מועד הקריאה האחרונה של השיטה הזו על ידי שימוש ב-WorkManager.getLastCancelAllTimeMillis()
לניקוי נוסף של המצב הפנימי.- הוספנו את
WorkManager.pruneWork()
כדי להסיר משימות שהושלמו מהמסד הפנימי. b/79950952, b/109710758
שינויים בהתנהגות
- נוסף תג משתמע לכל ה-
WorkRequest
, שהוא שם המחלקה המלא של ה-Worker
. כך אפשר להסירWorkRequest
s ללאtag
s או כשה-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
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()
כדי לבצע פעולות ניקוי קלות.- ה-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
.