WorkManager
העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסה אלפא |
---|---|---|---|---|
30 באוקטובר 2024 | 2.10.0 | - | - | - |
הצהרת יחסי תלות
כדי להוסיף תלות ב-WorkManager, צריך להוסיף את מאגר Google Maven לפרויקט:
מוסיפים את יחסי התלות של הארטיפקטים הנדרשים בקובץ 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
- הגרסה 2.10.0 של WorkManager מתורגמת עכשיו עם SDK 35.
- תיקון זמן קצוב לתפוגה של משימות חזית מסוג 'שירות קצר' ו'סנכרון נתונים', שגורם ל-ANR כש-
WorkManager
לא קורא ל-stopSelf()
. התיקון הזה רלוונטי רק למכשירים עם API 34 ו-35 שבהם הוצגו סוגי שירותים שפועלים בחזית. (ca06b2, b/364508145) - ממשקי API חדשים של
WorkerParameters
שמאפשרים להחליף את התהליך המרוחק שאליוWorker
מתחבר כשמשתמשים ב-WorkerFactory
. (Ibdc8a, Ie8a90, I7373f)
תיקוני באגים
- תיקון קריסה שנגרמה על ידי
WorkManager
בניסיון להפעיל מחדש worker ארוך טווח (כלומר worker בחזית) כשסוג העבודה בחזית כלל הרשאות תנאי מוקדם ל-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
- נוספה האפשרות להפיק span של מעקב באמצעות
@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
בניסיון להפעיל מחדש worker ארוך טווח (כלומר worker בחזית) כשסוג העבודה בחזית כלל הרשאות תנאי מוקדם ל-Android 14 שבוטלו. (b/333957914)
גרסה 2.9.0
29 בנובמבר 2023
androidx.work:work-*:2.9.0
משוחרר. גרסה 2.9.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.8.0
- ניראות (observability) באמצעות
Flow
-s. במקוםLiveData
, אפשר עכשיו לעקוב אחרי ההתקדמות של Worker דרך Flow באמצעותWorkManager.getWorkInfosFlow
ושיטות דומות. - עכשיו השדה
WorkManager
מספק רמז לגבי הסיבה לכך שעובד הופסק בעבר. אפשר לשלוח שאילתות עליו מהעובד עצמו באמצעות השיטהgetStopReason()
או מ-WorkInfo
באמצעותgetStopReason()
. - תזמון מדויק של עובדים תקופתיים באמצעות
setNextScheduleTimeOverride
. כך אפשר לחשב באופן דינמי את לוח הזמנים הבא של העבודה המחזורית, וליישם תכונות מתקדמות כמו זמני רענון מותאמים אישית, התנהגות מותאמת אישית של ניסיונות חוזרים או הפעלה של עובד של פיד החדשות לפני שהמשתמש מתעורר כל בוקר בלי שיהיו שינויים לא צפויים. כדי להימנע מביטול של עובד שפועל כרגע בזמן תזמון של העובד הבא, צריך להשתמש ב-ExistingPeriodicWorkPolicy.UPDATE
בשילוב עם השיטות האלה. - בדיקה של WorkManager עם תאימות לשרשור בסביבת הייצור. אפשר להשתמש ב-
ExecutorsMode.PRESERVE_EXECUTORS
ב-initializeTestWorkManager
כדי לשמור את המבצעים שהוגדרו ב-Configuration
ולהשתמש בשרשור הראשי האמיתי. - ממשקי API של פונקציות רפיטיטיביות (Coroutines) כמו
CoroutineWorker
הועברו מהארטיפקט הנוסף work-runtime-ktx לארטיפקט הראשי work-runtime. הארטיפקט work-runtime-ktx ריק עכשיו.
שינויים ב-API
stopReason
נוסף ל-WorkInfo
. הוא הופך אתstopReason
לזמין אחרי שהעובד פועל. יכול להיות שזה יעזור בדיווחstopReason
בצורה שימושית, כי אחרי שעובד נעצר, האפליקציה עצמה יכולה להיפסק לפעול במהירות רבה. (I21386)- מאפשרים להגדיר את
Clock
דרך קובץ התצורה ולהשתמש בו כדי לקבוע את רצף הביצוע של בדיקות Worker. (Ic586e) - הוספנו את השיטה
getStopReason()
ל-ListenableWorker
, שמספקת רמז למה העובד הופסק. (I07060) - הוספנו את
WorkManagerTestInitHelper#closeWorkDatabase()
כדי למנוע את האזהרה של Closeguard לגבי דליפת משאבים. (Ia8d49) - ה-constructor של
WorkInfo
הוא עכשיו ציבורי, ויכול להיות שימושי לבדיקה. (Ia00b6, b/209145335) work-runtime-ktx
ריק עכשיו, ו-CoroutineWorker
ותוכנות שירות ספציפיות אחרות ל-Kotlin זמינות עכשיו בארטיפקט הראשי של סביבת זמן הריצה. (I71a9a)- נוספה השיטה
setNextScheduleTimeOverride
, שמאפשרת להגדיר לוחות זמנים תקופתיים לעבודה בצורה מדויקת (I3b4da) - הוספת
getNextScheduleTimeMillis
כדי לקבל מידע על זמן הריצה המתוזמן נוסף ל-WorkInfo
. (I797e4) - פרטי ההשהיה הראשונית והתדירות נוספים ל-
WorkInfo
. (I52f2f) - נוספה השיטה observe workers via Flows באמצעות השיטות
getWorkInfosByTagFlow
, getWorkInfoByIdFlow
, getWorkInfosForUniqueWorkFlow
, getWorkInfosFlow
(If122a) - נוספו הערות
@RequiresApi(...)
חסרות למאפיינים ולמגדירי ה-constructor של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 מכילה את ההוספות האלה.
תכונות חדשות
- ניראות (observability) באמצעות
Flow
-s. במקוםLiveData
, אפשר עכשיו לעקוב אחרי ההתקדמות של Worker דרך 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. - החלופות ל-inline עבור
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 ישירות מ-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
גרסה 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 מכילה את השמירות האלה.
תכונות חדשות
- צמצום התחרות על 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
החל מ-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
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 שפועלות כרגע.
- בקשות 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 צריך להשתמש כשמשתמשים ישירות ב-JobService APIs. 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 שמזהיר כש
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
s. (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
שצריך לבצע בעתיד. ה-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)
- שיפור ניהול מחזור החיים של שירותים בחזית ל-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
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
s שסופקו. (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 תואם של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
והקריאה החוזרת (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
, ובעקבות זאת אמורות להיפתר כמה בעיות במסד הנתונים. - הוסרו חלק מפעולות הקלט/פלט (I/O) של דיסק האתחול ב-thread הראשי.
- תוקנה נעילה מרובת משתמשים פוטנציאלית במעקב אחר אילוצים. 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).
- פתרון לבאגים ספציפיים של יצרני ציוד מקורי בהטמעה של
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
הגרסה WorkManager 2.1.0-alpha01 זמינה. הגרסה הזו כוללת כמה ממשקי API חדשים. לתשומת ליבכם: החל מהגרסה הזו, יהיו תכונות חדשות שלא יועברו לגרסה 1.x. מומלץ לעבור לגרסה 2.x.
שינויים ב-API
- הוספנו את ההפעלה על פי דרישה ל-WorkManager, שתצור את WorkManager רק כשמתבצעת הפניה אליו. b/127497100 כדי להגדיר את הפרויקט לצורך אתחול על פי דרישה:
- השבתת המפעיל האוטומטי.
- מטמיעים את
Configuration.Provider
באובייקטApplication
המותאם אישית. - משנים את כל ההפניות ל-
WorkManager.getInstance()
ל-WorkManager.getInstance(Context)
. כחלק מהשינוי הזה, הוצאנו משימוש אתWorkManager.getInstance()
. תמיד בטוח יותר להפעיל את החלפתWorkManager.getInstance(Context)
החדשה, גם אם לא מבצעים אתחול על פי דרישה.
- הוספנו את היכולת ליצור כיתות
Worker
ו-ListenableWorker
שניתנות לבדיקה באמצעותTestWorkerBuilder
ו-TestListenableWorkerBuilder
ב-artifactwork-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
Groovy
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 נכשל בניסיון חוזר לביצוע עבודה לאחר מוות של תהליך, כשמשתמשים בהטמעה שמבוססת על AlarmManager. b/123329850
- תוקנה בעיה שגרמה ל-WorkManager לדלוף Wakelocks כשמשתמשים בהטמעה שמבוססת על AlarmManager.
גרסה 1.0.0-beta03
25 בינואר 2019
הגרסה הזו כוללת כמה תיקוני באגים.
תיקוני באגים
- הוספנו חזרה לאחור (regression)
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 צפוי להישאר יציב עד לגרסת ה-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
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
s ייחודיים בלי שתצטרכו ליצור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
- הוסרו כל השיטות והכיתות הקודמות של
deprecated
, במיוחד ה-constructorWorker
שמוגדר כברירת מחדל. זהו שינוי תוכנה שעלול לגרום לכשל ב-API. - שיניתם את השם של
NonBlockingWorker
ל-ListenableWorker
, וכעת זוהי כיתה ציבורית גלויה ומוכנה לשימוש.ListenableWorker
מספק גישה ל-method מופשט אחד,ListenableFuture<Payload> onStartWork()
, שנקרא בשרשור הראשי. אתם אחראים להתחיל את העבודה ולעבד אותה באופן אסינכרוני. בסיום, צריך לעדכן אתListenableFuture
בהתאם. הטמעות עזר שלListenableFuture
s זמינות בחבילה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:
Groovy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
תיקוני באגים
- הוספנו תיקון נוסף שנחוץ לשגיאה '100 משימות'. b/115560696
- הוספנו כמה תיקונים לשגיאות באילוצים של מפתחות זרים שנובעות מתנאי תחרות. b/114705286
- קריאות
ConstraintTrackingWorker.onStopped(boolean)
שהוקצו ל-Worker
הבסיסי. b/114125093 - אכיפת עיכוב מינימלי נכון של זמן ההשהיה לניסיון חוזר ב-Firebase JobDispatcher. b/113304626
- שיפורים בשרשור מבטיחים עבודה פנימית בספרייה.
- תיקון בעיה פוטנציאלית עם הסרת כפילויות של
LiveData
באופן פנימי.
שינויים ב-API
- עכשיו אפשר ליצור מכונות
Worker
משלכם בסביבת זמן הריצה על ידי ציוןWorkerFactory
כחלק מ-WorkManager.Configuration
. המפעל החלופי הואDefaultWorkerFactory
, והוא תואם להתנהגות של גרסאות קודמות של WorkManager.- ה-constructors שמוגדרים כברירת מחדל ל-
Worker
ול-NonBlockingWorker
מסומנים עכשיו כ-deprecated. צריך להשתמש ב-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
שינויים שעלולים לגרום לכשלים
- הערה
@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/79716516WorkManager.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
לשרשור הרקע. - עכשיו, כשכל העבודה בהמתנה תושלם, ההטמעה של
AlarmManager
תתבצע בצורה נכונה. - תוקנו שאילתות SQL לניקוי שמשפיעות על אזורים שאינם באנגלית. b/80065360
- הוספנו תמיכה ב-
float
ב-Data
. b/79443878 - עכשיו
Data.Builder.putAll()
מחזירה מופע שלBuilder
. b/79699162 - עוד תיקונים ו-javadoc במסמכי התיעוד. b/79691663
שינויים ב-API
Worker
יכולים להגיב להפסקה. אפשר להשתמש ב-Worker.isStopped()
כדי לבדוק אםWorker
הופסק. אפשר להשתמש ב-Worker.onStopped()
כדי לבצע פעולות ניקוי קלילות.- ה-API של
Worker.getTags()
מחזירSet
של תגים שמשויכים ל-Worker
. - הוספנו עומסי יתר של
javax.time.Duration
לממשקי API שמקבלים שילוב של משך זמן ו-TimeUnit
. הנתונים האלה מוגנים על ידי@RequiresApi(26)
. WorkManager
תוספים הועברו מחבילהandroidx.work.ktx
לחבילהandroidx.work
. התוספים הישנים הוצאו משימוש וייוסרו בגרסה עתידית.- האפשרות
Configuration.withExecutor()
הוצאה משימוש. במקום זאת, אתם צריכים להשתמש ב-Configuration.setExecutor()
.
גרסה 1.0.0-alpha01
8 במאי 2018
WorkManager מפשט את תזמון והרצה של עבודות ברקע מובטחות שמותאמות למגבלות. הגרסה הראשונית היא 1.0.0-alpha01
.