WorkManager
העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
---|---|---|---|---|
23 באפריל 2025 | 2.10.1 | - | - | - |
הצהרת יחסי תלות
כדי להוסיף תלות ב-WorkManager, צריך להוסיף את מאגר Google Maven לפרויקט:
מוסיפים את יחסי התלות של הארטיפקטים הנדרשים בקובץ build.gradle
של האפליקציה או המודול:
dependencies { def work_version = "2.10.1" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
dependencies { val work_version = "2.10.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.1
23 באפריל 2025
androidx.work:work-*:2.10.1
משוחרר. גרסה 2.10.1 כוללת את ההוספות האלה.
תיקוני באגים
- צמצום הסיכוי לזריקת
TooManyRequestsException
מהרישום שלWorkManager
שלNetworkCallback
המשמש למעקב אחר אילוצים. ((b/231499040)[https://issuetracker.google.com/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
נוסף כדי לשלוט במרכז ההפצה שבו מתבצע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
- הגרסה 2.10.0 של WorkManager מתורגמת עכשיו עם 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 בגרסה 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
נוסף כדי לשלוט במרכז ההפצה שבו מתבצעCoroutineWorker
. מומלץ להימנע לחלוטין משימוש ב-Dispatchers.Default
ב-WorkManager
. (Icd1b7)- הוספת מנהלים מותאמים אישית של חריגות ל-Workers (Ib1b74, b/261190695)
- עכשיו אפשר ליצור את
OneTimeWorkRequest.Builder
ו-PeriodicWorkRequest.Builder
באמצעותKClass
במקוםClass
:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()
(Ib55f6) - הכיתה
WorkManager
הועברה ל-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)
גרסה 2.9.0
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) - נוספה השיטה observe workers via Flows באמצעות השיטות
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
ולהשתמש בשרשור הראשי האמיתי. - ממשקי 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) - נוספה השיטה 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
. שימו לב: אם העובד פועל כרגע, יכול להיות שהשיטה הזו תחזיר דור חדש יותר מזה של העובד שפועל כרגע, אם בוצע עדכון במהלך ביצוע העובד. (I665c5, b/219446409) (I128a9, b/219446409) - הוספנו את
InitializationExceptionHandler
, טיפול בחריגות שאפשר להשתמש בו כדי לקבוע אם היו בעיות בניסיון לאתחל אתWorkManager
. (I061de)
גרסה 2.8.0-alpha03
10 באוגוסט 2022
androidx.work:work-*:2.8.0-alpha03
משוחרר. גרסה 2.8.0-alpha03 כוללת את ההצהרות האלה.
תכונות חדשות
- נוספה היכולת לעדכן את
WorkRequests
באופן לא פולשני, תוך שמירה על זמן ההוספה המקורי לתור, על שרשור וכו'. פרטים נוספים זמינים במאמריםWorkManager.updateWork
ו-ExistingPeriodicWorkPolicy.UPDATE
.
שינויים ב-API
- הוספנו את
WorkManager.updateWork
כדי לעדכן את העבודה תוך שמירה על שעת ההוספה לתור המקורית והשרשור שלה.(I9a248, b/219446409) - צירפנו את
ExistingPeriodicWorkPolicy.UPDATE
למרחב המשותף. המדיניות הזו מאפשרת לעדכן עבודה תקופתית לפי השם שלה. הוא דומה ל-REPLACE
הקיים, אבל פחות פולשני: הוא לא מבטל עובד אם הוא פועל כרגע, והוא שומר את זמן ההוספה לתור – התקופה והעיכוב הראשוני מחושבים מזמן ההוספה המקורי לתור, ולא מזמן העדכון. הוצאנו משימוש אתREPLACE
כדי למנוע בלבול ביןREPLACE
לביןUPDATE
, שהשמות שלהם דומים מאוד. אם אתם עדיין רוצים לשמור על הסמנטיקה הקודמת שלREPLACE
, תוכלו להשתמש ב-CANCEL_AND_REENQUEUE
החדש שנוסף, שהוא זהה ל-REPLACE
. (I985ed, b/219446409) - הוספת היכולת ליירט חריגות לתזמון על ידי הגדרת
SchedulingExceptionHandler
. (I033eb) - החלופות ל-
OneTimeWorkRequest
ול-PeriodicWorkRequest
בקוד הועברו מ-androidx.work:work-runtime-ktx
אלandroidx.work:work-runtime
(I0010f, b/209145335)
תיקוני באגים
- הוספנו את
@RequiresPermission
לממשקי API שדורשים להעניק את ההרשאה POST_NOTIFICATIONS ב-SDK 33 ואילך. (Ie542e, b/238790278)
גרסה 2.8.0-alpha02
6 באפריל 2022
androidx.work:work-*:2.8.0-alpha02
משוחרר. גרסה 2.8.0-alpha02 מכילה את ההוספות האלה.
שינויים ב-API
- עכשיו אפשר ליצור אילוצים ישירות במקום להשתמש ב-Builder, וזה נוח למשתמשי Kotlin. (Idc390, b/137568653)
- נוספה היכולת לבדוק אם
WorkManager
הותחל. בנוסף, הוספנו ממשק API חדש שלgetConfiguration()
למפתחי הספריות, כדי לקבל את ההגדרה שבהWorkManager
הופעל. (I6eff3, b/212300336)
גרסה 2.8.0-alpha01
12 בינואר 2022
androidx.work:work-*:2.8.0-alpha01
משוחרר. גרסה 2.8.0-alpha01 כוללת את ההצהרות האלה.
שינויים ב-API
- נוספו שיטות העזר
WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
ו-WorkQuery.fromTags
כדי ליצור WorkQuery ישירות. (If48f2, b/199919736) - נוספו שיטות ניסיוניות של BuildCompat לערכות SDK עתידיות (Iafd82, b/207528937)
- מוסיפים את
getForegroundInfo
ל-Worker
. (Ic1ead) - נוספו שיטות עזר
WorkQuery.fromIds
ליצירת WorkQuery ישירות ממזהים. (Ie5bdf, b/199919736) - ל-RxWorker יש עכשיו את
setForeground
שמחזיר אתCompletable
, שאפשר להשתמש בו במקוםsetForegroundInfoAsync
שמחזיר אתListenableFuture
. (I85156) - ב-RxWorker ל-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
גרסה 2.7.0
13 באוקטובר 2021
androidx.work:work-*:2.7.0
משוחרר. גרסה 2.7.0 כוללת את ההצהרות האלה.
שינויים חשובים מאז גרסה 2.6.0
ב-WorkManager יש API חדש של
WorkRequest.Builder.setExpedited(...)
שעוזר להתמודד עם ההגבלות על שירותים שפועלים בחזית ב-Android 12.כשמשתמשים ב-
setExpedited(...)
, החל מגרסה 12 של Android, WorkManager מעביר משימות מהירות ל-JobScheduler, תוך שמירה על תאימות לאחור בגרסאות קודמות של 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 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
תכונות חדשות
- צמצום התחרות על 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
: הוספת תמיכה ב-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 מכילה את ההצהרות האלה.
תיקוני באגים
- מגדירים את יכולת השינוי של
PendingIntent
באופן מפורש, כדי לתקן קריסה כשמטרגטים ל-Android מגרסה 12. (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
החל מגרסה 12 של Android, תוך שמירה על תאימות לאחור בגרסאות קודמות של 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
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
. (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) - מתקנים את כללי 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 מכילה את השמירות האלה.
תכונות חדשות
- מוסיפים 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).
גרסה 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) - עכשיו יש תמיכה ב-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 שפועלות כרגע.
- בקשות עבודה מתוזמנות. (aosp/1235501)
מוסיפים את
ExistingWorkPolicy.APPEND_OR_REPLACE
, שדומה ל-APPEND
, אבל מחליף שרשרת שבה תנאים מוקדמים בוטלו או נכשלו. (b/134613984, aosp/1199640)היכולת להוסיף
RunnableScheduler
בהתאמה אישית כדי לעקוב אחרי בקשות עבודה שצריך לבצע בעתיד. ה-Scheduler בתהליך משתמש בזה. (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
s במהלך המעקב אחרי מצב הרשת של מכשיר. (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
לפי שילוב של כמה מאפיינים. מידע נוסף זמין במאמרים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 שפועלות כרגע.
- בקשות עבודה מתוזמנות. (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
שצריך לבצע בעתיד. ה-Scheduler בתהליך משתמש בו. (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
ל-Worker
לטווח ארוך שפועלים כש-Service
בחזית פעיל. (aosp/1218539, b/147249312) - עכשיו
WorkManager
תלוי ב-androidx.sqlite:sqlite-framework:2.1.0
stable. (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)
- תוקן באג שבו רשימה ריקה של
WorkRequest
s גרמה ליצירה של שרשרת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
s מ-Notification
s. אנחנו צופים שהתכונה הזו תוצג בשילוב עם ממשקי ה-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)
תיקוני באגים
- כשמספר ה-
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 תואם שלsetProgress
-ingsetProgress
ב-CoroutineWorker
ו-setProgress
ב-RxWorker
שמחזירSingle<Void>
.suspend
באמצעות ממשקי ה-API החדשים האלה, העובדים יכולים להעביר מידע על ההתקדמות דרךWorkInfo
, שיש לו ממשקgetProgress
API תואם. (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
והשיחה החוזרת (call back) של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
משוחרר. כאן אפשר למצוא את ההתחייבויות (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
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
תיקוני באגים
- תוקנה באג בהטמעה של 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
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
תכונות חדשות
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
ב-artifactwork-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) שכלולות בגרסה הזו.
תיקוני באגים
- עכשיו WorkManager תלוי ב-
Room 2.1.0
, ובעקבות זאת אמורות להיפתר כמה בעיות במסד הנתונים. - הוסרו פעולות קלט/פלט מסוימות של דיסק ההפעלה בשרשור הראשי.
- תוקנה נעילה מרובת משתמשים פוטנציאלית במעקב אחר אילוצים. b/134361006
- ביטול מראש של משימות לא חוקיות שמשויכות ל-WorkManager. b/134058261
- הוספנו כמה קריאות הגנה לממשקי ה-API של JobScheduler למכשירים שמתנהגים בצורה לא תקינה.
גרסה 2.1.0-alpha03
5 ביוני 2019
androidx.work:*:2.1.0-alpha03
משוחרר.
תיקוני באגים
- מסמכי תיעוד משופרים ל-
PeriodicWorkRequest
. WorkManagerTestInitHelper
משתמש עכשיו במבצע הרקע הנכון לבדיקות.- תיקונים לבעיות ב-SQLite כשמתמודדים עם עסקאות גדולות במכשירים מסוימים. (b/130182503)
- יחסי התלות של WorkManager מפורטים יותר עכשיו. (b/133169148).
- פתרון לבאגים ספציפיים ל-OEM בהטמעה של
JobScheduler
כשמתזמנים משימות באמצעות WorkManager. - שיפורים בלוח הזמנים שמבוסס על AlarmManager לגבי משכי החיים של שירותים, שגרמו בעבר לקריסות נדירות. (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
s כדי לציין שאין תמיכה בזמן גמישות ב-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" }
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
של 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 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. מעכשיו והלאה, ממשק ה-API של WorkManager צפוי להישאר יציב עד לגרסה הבאה, אלא אם תהיה בעיה קריטית. הגרסה הזו כוללת כמה תיקוני באגים.
תיקוני באגים
- משימות צאצא שבוטלו בעבר של משימות הורה שהושלמו בהצלחה לא יפעלו יותר. 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
s אין שיטות 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
לא מקבלים יותר פרמטרים ניתנים לשינוי (varargs) עבור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
לא מקבלים יותר פרמטרים ניתנים לשינוי (varargs) עבורWorkRequest
. - ניסיון לבצע
initialize
WorkManager
יותר מפעם אחת לכל תהליך יוביל עכשיו ל-IllegalStateException
.
גרסה 1.0.0-alpha10
11 באוקטובר 2018
הגרסה הזו תומכת בעבודה אסינכררונית בשליטת המפתחים. בגרסה הזו יש שינויים ב-API שעלולים לגרום לכשל. אפשר לעיין בקטע שינויים ב-API שעלולים לגרום לכשל בהמשך.
אנחנו צופים ש-WorkManager ייכנס לשלבים האחרונים של תקופת ה-alpha. אנחנו מצפים שה-API יהיה יציב בגרסת הבטא, לכן מומלץ להקדיש קצת זמן לשליחת משוב במערכת למעקב אחר בעיות.
שינויים ב-API
- הוסרו כל השיטות והכיתות הקודמות של
deprecated
, במיוחד ה-constructorWorker
שמוגדר כברירת מחדל. זהו שינוי תוכנה שעלול לגרום לכשל ב-API. - השם של
NonBlockingWorker
שונה ל-ListenableWorker
. הכיתה הזו היא עכשיו כיתה ציבורית גלויה ומוכנה לשימוש.ListenableWorker
מספק גישה ל-method מופשט אחד,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
. לדוגמה, בעבר הפונקציה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
ה. b/116253486 ו-b/116677275 - עכשיו אפשר להזין ב-
WorkContinuation.combine()
ערךWorkContinuation
אחד או יותר במקום שניים או יותר. b/117266752
שינויים ב-API שמשפיעים על הקוד
- הוסרו כל השיטות והכיתות הקודמות של
deprecated
, במיוחד ה-constructorWorker
שמוגדר כברירת מחדל. - הממשק
WorkerFactory
וההטמעה הקונקרטיתDefaultWorkerFactory
מוזגו לכיתה מופשטת שנקראתWorkerFactory
. WorkManager.synchronous()
ו-WorkContinuation.synchronous()
הוסרו.- השיטות
WorkManager.getStatus*()
מחזירות עכשיו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' } }
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
תיקוני באגים
- הוספנו תיקון נוסף שנחוץ לשגיאה '100 משימות'. b/115560696
- הוספנו כמה תיקונים לשגיאות באילוצים של מפתחות זרים שנובעות מתנאי מרוץ (race condition). b/114705286
ConstraintTrackingWorker.onStopped(boolean)
שהוקצה מבצע קריאה ל-Worker
הבסיסי. b/114125093- אכיפת עיכוב מינימלי תקין של זמן ההשהיה לניסיון חוזר ב-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 החדש בהקדם האפשרי. בגרסאות עתידיות ה-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
- עכשיו המחיר של
WorkManager.getInstance()
הוא@NonNull
במקום@Nullable
. במקום זאת, אם ה-Singleton לא יופעל כראוי במקרים של הפעלה ידנית, השיטה תזרוקIllegalStateException
. זהו שינוי מהותי ב-API. - נוספה ממשק API חדש,
Configuration.Builder.setMinimumLoggingLevel(int)
, שאפשר להשתמש בו כדי לקבוע את רמת הפירוט של WorkManager. כברירת מחדל, WorkManager מתעד ביומן את האירועים מסוגLog.INFO
ואילך. - חתימה משתנה של
Data.getString()
כך שהיא כבר לא מקבלת ערך ברירת מחדל (היאnull
באופן משתמע). זהו שינוי API שגורם לשבירה. - סימנו את השיטות שדרושות רק לשימוש פנימי בתווית
@hide
. כולל את המבנה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
שינויים שעלולים לגרום לכשלים
- עכשיו המחיר של
WorkManager.getInstance()
הוא@NonNull
במקום@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
.