WorkManager
| העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
|---|---|---|---|---|
| 23 בספטמבר 2026 | 2.12.0 | - | - | - |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-WorkManager, צריך להוסיף את מאגר Google Maven לפרויקט:
אתם יכולים להוסיף את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:
Groovy
dependencies { def work_version = "2.12.0" // (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.12.0" // (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.12
גרסה 2.12.0
23 בספטמבר 2026
androidx.work:work-*:2.12.0 מופץ. גרסה 2.12.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.11.0:
-
minSdkעודכן מ-API 23 ל-API 24 - נוסף ארטיפקט חדש,
androidx.work:work-analytics, שכולל ממשקי API ניסיוניים של מדדי עבודה לבדיקת היסטוריית הביצוע של העבודה. WorkMetricsInfoRepositoryמתעדWorkMetricsInfoלכל אירוע בעבודה חותמות זמן, משך זמן של העובד, זמן ריצה מצטבר כולל ופירוט של ניסיונות ההפעלה. אפשר לקרוא את המדדים באמצעות שאילתות שניתנות להגדרה, או לצפות בהם כFlowשל עבודה שהושלמה. כדי להשתמש בממשקי ה-API האלה, צריך להצטרף לתוכנית@ExperimentalWorkMetricsApi. - ממשקי API חדשים של רכיב event listener ניסיוני מאפשרים לכם לעקוב ישירות אחרי ההרצה והתזמון של
WorkManager. Configuration.Builderמקבל עכשיו listener לאירועי ביצוע של worker (התחלה, סיום, עצירה וחריגים שלא נתפסו) ו-listener לאירועי תזמון (הוספה לתור, ביטול חסימה, עדכון וביטול). אלה אבני הבניין שעליהן מבוססwork-analyticsעצמו.
גרסה 2.12.0-rc01
12 באוגוסט 2026
androidx.work:work-*:2.12.0-rc01 מופץ. גרסה 2.12.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה שגיאת הקלדה בשם הקובץ ובמחלקת
WorkConstraintsDaoTest. (I0868d) - הפחתנו את התחרות על נעילה ב-
PackageManagerServiceבמהלך ההפעלה שלWorkManagerעל ידי שליחת שאילתות ושמירת מצבי ברירת המחדל של רכיבי המניפסט במטמון ב-PackageManagerHelper. (Id84ba, b/528755807) - תוקנה בעיה שבה קריאה ל-
WorkManager.updateWorkבזמן ש-worker פעל באופן פעיל גרמה לשינוי מיידי של ה-hooks של אירועי מחזור החיים של הביצוע ומעקב הטלמטריה לדור שאחרי העדכון. (Ie80e8, b/511074795)
גרסה 2.12.0-beta01
29 ביולי 2026
androidx.work:work-*:2.12.0-beta01 מופץ. גרסה 2.12.0-beta01 מכילה את השמירות האלה.
תיקוני באגים
- תיקון של דליפת זיכרון כשמבצעים לכידה של חריגות של רכיב ההפעלה (I3404e, b/532588487)
- שיפור ההפצה של ביטולים ב-
RemoteListenableWorkerכדי שעצירות של עובדים שהופעלו על ידי המערכת יבטלו כראוי קורוטינות מרוחקות ויקבעו מחדש את מועד העבודה, ועובדים מרוחקים שמבטלים את עצמם יסמנו את העבודה כ-FAILED (נכשלה). הערה: ההתנהגות הזו מוגבלת כרגע על ידי הדגלConfiguration.isRemoteCancellationPropagationFixEnabled(ברירת המחדל היא false) של קבוצת הספריות, כדי לאפשר אימות ניסיוני ולוודא שמדדי המהימנות יישארו יציבים לפני הסרת הדגל באופן סופי. (I387f3, b/420724435)
גרסה 2.12.0-alpha01
15 ביולי 2026
androidx.work:work-*:2.12.0-alpha01 מופץ. גרסה 2.12.0-alpha01 מכילה את השמירות האלה.
שינויים ב-API
- נוסף
WorkMetricsQueryAPI לסינון פרטי מדדים (I132b4, b/522338412) - מטמיעים את
workerDurationMillisואתtotalRuntimeMillisב-WorkMetricsInfoכדי לעקוב אחרי משך הביצוע של העובד ואחרי זמן הריצה המצטבר הכולל. (I57f65, b/507212208) - נוספו בנאים (constructors) של
retentionDuration(משך, API 26 ומעלה) ושלretentionTime/retentionTimeUnit(API 23 ומעלה) ל-WorkMetricsInfoRepositoryכדי לאפשר הסרה של מדדים ישנים. ברירת המחדל היא 7 ימים. (Ifdf2e, b/522338412) - נוסף API של זרימת נתונים ל-
WorkMetricsInfo(I11ec2, b/507212999) - הוספת הערה ניסיונית חסרה לכיתות
work-analytics(I1a055, b/528112001) - מעכשיו יש ל-
androidx.benchmarkמינוי ל-minSdkעם מכסת אחסון של 24GB. (Ic2a85) - מטמיעים את
stopReasonCounts, explicitRetryCountו-runAttemptCountב-WorkMetricsInfo. (I95498, b/507212225) - מטמיעים ממשקי API של
WorkMetricsInfoוסכימת מסד נתונים כדי לעקוב אחרי היסטוריית הביצוע של העבודה, כולל חותמות זמן של הוספה לתור, ביטול חסימה, התחלה וסיום. (I163e9, b/479123623, b/507212482) - נוסף API ניסיוני להשבתת תזמון אופורטוניסטי בתהליך (I1062d, b/513299442)
- הוספת API ניסיוני להאזנה
WorkManagerלאירועי תזמון (I14487, b/448485695) - הוספת שם של סוג עובד אל
WorkInfo(I57da1, b/448485695) - הוספת אנוטציה מפורטת יותר ל-API הניסיוני של רכיב event listener (Icaa8e, b/448485695)
- הוספת API חדש שמאפשר אחזור של מערכי מחרוזות עם ערך null ממופעים של מחלקת
Data(I78bc3, b/383071402) - יצירת פריט מידע
work-analytics(Idc7c2, b/465357612) - נוסף API ניסיוני להגדרת מאזין לאירועים של הפעלת worker (I06b38, b/448485695)
תיקוני באגים
- שימוש ב-
Dispatchers.Defaultבמקום במאגר שרשורים בהתאמה אישית להגדרת ברירת המחדל של WM (Ic2c42, b/506239869) - שיפור הבדיקות והוספת בדיקות לניהול עובדים לא טובים (I500f3, b/506239869)
- תוקנה בעיה בשיגור של
ConcurrentModificationExceptionב-WorkManager'sexecution listener. (I4cc18, b/506239869) - תוקנו קריסות של תהליכים ב-
WorkManagerבזמן רישום של קריאות חוזרות (callback) למגבלות רשת, בגלל הרשאות חסרות שלACCESS_NETWORK_STATE. (I7045a, b/446013734) - שיפור הפרטים ביומן כשיומני ניפוי באגים מופעלים (Id9e5f, b/491209738)
- תוקן באג שגורם לכך שלא ניתן לתזמן מחדש עבודות שנכשלו במערכת ההפעלה (I452fc, b/504085166, b/517339607)
- תוקן קישור למסמך העזר
Configuration.Provider(Ieedb7, b/340913210) - הוסר החסימה של פעולות על ידי ווים של אירועים (I27cd8, b/448485695)
-
WorkManagerמנסה עכשיו לאתחל ב-SQLiteExceptionכללי. (I98436, b/485368721) - תוקנה הבעיה שבה מפתחים יכלו לקבל קוד סיבת עצירה לא קיים של 0 על ידי מיפוי שלו ל-
WorkInfo.STOP_REASON_UNKNOWN. (I0b175, b/479314734) - תיקון בעיות נוספות שגורמות לכך ששיחות ברשת נכשלות ברקע גם כשמתקיימים אילוצי הרשת (Ic7f73, b/445324855)
- טיפול בחריגת אבטחה ב-
NetworkStateTracker. (I4b7ca, b/480123154) - חשוב לוודא שה-hooks של ההפעלה מקבלים תמונת מצב מדויקת של
WorkInfo(I25ebb, b/448485695) - תוקנה בעיה שגרמה לכך שבקשות רשת ברקע נכשלו ב-Android 15. (I60f24, I8a0a2, b/452081708) (I5abb7, b/465016918)
- תוקנה הבעיה שבה
WorkRequests תקופתיות שנכשלו בגלל חריגה לא מטופלת לא תוכננו מחדש. (Ia6b92, b/443879071)
גרסה 2.11
גרסה 2.11.2
25 במרץ 2026
androidx.work:work-*:2.11.2 מופץ. גרסה 2.11.2 מכילה את השמירות האלה.
תיקוני באגים
- תיקון בעיות נוספות שגורמות לכך שקריאות לרשת נכשלות ברקע גם כשמתקיימות מגבלות הרשת (Ic7f73, b/445324855)
- טיפול בחריגת אבטחה ב-
NetworkStateTracker. (I4b7ca, b/480123154) - תוקנה הבעיה שבה
WorkRequests תקופתיים שנכשלו בגלל חריגה שלא נתפסה לא תוכננו מחדש. (Ia6b92, b/443879071)
גרסה 2.11.1
28 בינואר 2026
androidx.work:work-*:2.11.1 מופץ. גרסה 2.11.1 מכילה את השמירות האלה.
תיקוני באגים
- תיקון של אילוץ מצב הרשת ממעבר בזמן שהקישוריות חסומה ב-Android מגרסה 15 ואילך. (I5abb7, b/465016918)
- תוקן מעקב אחרי מגבלות רשת שלא התייחס למצב חסימה כערך הראשוני. (I8a0a2, b/452081708)
- תוקנה בעיה בהעברת אילוץ של בקשה לאחזור מהרשת בזמן שהקישוריות חסומה ב-Android 15 ומעלה. (I60f24, b/452081708)
גרסה 2.11.0
22 באוקטובר 2025
androidx.work:work-*:2.11.0 מופץ. גרסה 2.11.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.10.0:
-
minSdkעודכן מ-API 21 ל-API 23. - ה-API
setRemoteSessionTimeoutMillisב-Configuration builder שלWorkManagerנוסף כדי לאפשר הגדרה של משך הזמן שבו סשן שלRemoteWorkManagerפעיל מאז השימוש האחרון בו.
גרסה 2.11.0-rc01
8 באוקטובר 2025
androidx.work:work-*:2.11.0-rc01 מופץ. גרסה 2.11.0-rc01 מכילה את השמירות האלה.
גרסה 2.11.0-beta01
24 בספטמבר 2025
androidx.work:work-*:2.11.0-beta01 מופץ. גרסה 2.11.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- הוספת
stopRunningWorkWithReasonאלWorkManagerTestDriver. (Ie53b2, b/439955564)
תיקוני באגים
- תיקון של שירות שפועל בחזית, שנעצר כשיש פקודות בהמתנה (Iae822, b/432069314)
- תיקון של כשל בהסרת הקישור של שירות מרוחק של קורוטינה של עובד מרחוק (I842f2, b/247113322)
גרסה 2.11.0-alpha01
27 באוגוסט 2025
androidx.work:work-*:2.11.0-alpha01 מופץ. גרסה 2.11.0-alpha01 מכילה את השמירות האלה.
שינויים ב-API
- הערך של minSdk עודכן מ-API 21 ל-API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- ה-API
setRemoteSessionTimeoutMillisב-WorkManager’s Configuration builder נוסף כדי לאפשר הגדרה של משך הזמן שבו סשן RemoteWorkManager פעיל מהשימוש האחרון בו. (Ib23c8) - מוסיפים API ניסיוני ב-
WorkRequest.Builderכדי להחיל השהיה לפני ניסיון חוזר (backoff) כשעבודה מופסקת על ידי המערכת. (Ie2dc7, b/335513480) - הוספת API לבדיקה כדי להעביר מחלקה שונה של worker אל
TestListenableWorkerBuilderמזו שנבנית לתמיכה בהטמעות מותאמות אישית שלWorkerFactory(If6bff, b/389154854)
תיקוני באגים
- הוספת אפשרות לשמירת יכולות הרשת במטמון ב-
SharedNetworkCallbackכדי למנוע תקשורת מיותרת בין תהליכים (IPC) (Ie4027, b/427115602) - תוקנה בעיה בהערכת מגבלות הרשת, שבה פריטי עבודה אחרי הראשון לא קיבלו את יכולות הרשת הנוכחיות, ובמקום זאת הופיעה השגיאה
ConstraintsNotMetאחרי פסק זמן (Ib6a66, b/427115602)
גרסה 2.10
גרסה 2.10.5
24 בספטמבר 2025
androidx.work:work-*:2.10.5 מופץ. גרסה 2.10.5 מכילה את השמירות האלה.
תיקוני באגים
- תיקון של שירות שפועל בחזית, שנעצר כשיש פקודות בהמתנה (Iae822, b/432069314)
גרסה 2.10.4
10 בספטמבר 2025
androidx.work:work-*:2.10.4 מופץ. גרסה 2.10.4 מכילה את השמירות האלה.
תיקוני באגים
- תיקון בעיה שגורמת לכך ש-
RemoteCoroutineWorkerלא מצליח לבטל את הקישור של שירות מרוחק (I842f2, b/247113322)
גרסה 2.10.3
30 ביולי 2025
androidx.work:work-*:2.10.3 מופץ. גרסה 2.10.3 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה עובדים עם מגבלות רשת זהות לעובד קודם דיווחו שהמגבלות לא מתקיימות. (b/427115602).
גרסה 2.10.2
18 ביוני 2025
androidx.work:work-*:2.10.2 מופץ. גרסה 2.10.2 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שמתרחשת כששומרים עובדים עם בקשות רשת ויכולות שמוגדרות כברירת מחדל, שגורמת להוספה מחדש של יכולות שהוסרו, וכתוצאה מכך עובדים עם מגבלות רשת מתנהגים בצורה לא תקינה. (b/409716532)
- תיקנו באג שגרם לכך שעובדים עם מגבלות רשת לא יפעלו באופן מיידי בגלל שהמגבלות לא מולאו, למרות שהרשת והיכולות היו זמינות. (b/423403088)
גרסה 2.10.1
23 באפריל 2025
androidx.work:work-*:2.10.1 מופץ. גרסה 2.10.1 מכילה את השמירות האלה.
תיקוני באגים
- הפחתת הסיכוי ש-
TooManyRequestsExceptionיופעל מרישום שלWorkManagerשלNetworkCallbackשמשמש למעקב אחר אילוצים. (b/231499040, b309d5).
גרסה 2.10.0
30 באוקטובר 2024
androidx.work:work-*:2.10.0 מופץ. גרסה 2.10.0 מכילה את השמירות האלה.
שינויים משמעותיים מאז גרסה 2.9.1
- נוספו תגי מעקב למשימות מ-
WorkManager, כך שהפלט של הפקודה adb shell dumpsys jobscheduler יהיה הרבה יותר קל להבנה כי הוא יכיל את השם של ה-Worker שמופעל. נוספים גם קטעי מעקב סביב אזורים מרכזיים ב-WorkManager. -
Configuration.workerCoroutineContextנוסף ל- כדי לשלוט ב-dispatcher במקום שבו מתבצעת הפעולהCoroutineWorker. - מפתחים יכולים לציין את
NetworkRequestכמגבלה לעובד באמצעות השיטהConstraints.setRequiredNetworkRequest. כך אפשר לקבוע בצורה מדויקת יותר באיזו רשת העובד הזה צריך לפעול. -
WorkManager2.10.0 עוברת עכשיו קומפילציה עם SDK 35 ומכילה שינויים שונים לצורך תאימות ל-SDK 35.
גרסה 2.10.0-rc01
24 באוקטובר 2024
androidx.work:work-*:2.10.0-rc01 מופץ. גרסה 2.10.0-rc01 מכילה את השמירות האלה.
גרסה 2.10.0-beta01
2 באוקטובר 2024
androidx.work:work-*:2.10.0-beta01 מופץ. גרסה 2.10.0-beta01 מכילה את השמירות האלה.
גרסה 2.10.0-alpha04
18 בספטמבר 2024
androidx.work:work-*:2.10.0-alpha04 מופץ. גרסה 2.10.0-alpha04 מכילה את השמירות האלה.
שינויים ב-API
- מוסיפים את סיבת ההפסקה
STOP_REASON_FOREGROUND_SERVICE_TIMEOUTכשהעובד בחזית מופסק בגלל זמן קצוב לתפוגה של הרצה, על סמך סוג השירות שפועל בחזית. (Ibd0af)
גרסה 2.10.0-alpha03
4 בספטמבר 2024
androidx.work:work-*:2.10.0-alpha03 מופץ. גרסה 2.10.0-alpha03 מכילה את השמירות האלה.
תכונות חדשות
- נוספו תגי מעקב למשימות מ-
WorkManager, כך שהפלט של הפקודה adb shell dumpsys jobscheduler יהיה הרבה יותר קל להבנה כי הוא יכיל את השם של ה-Worker שמופעל. נוספים גם קטעי מעקב סביב אזורים מרכזיים ב-WorkManager.
שינויים ב-API
- WorkManager 2.10.0 עובר עכשיו קומפילציה עם SDK 35.
- תיקון של עובדים שפועלים בחזית מסוג 'שירות קצר' ו'סנכרון נתונים' שפג הזמן שלהם וגרמו ל-ANR כש-
WorkManagerלא קרא ל-stopSelf(). התיקון הזה רלוונטי רק למכשירים עם API 34 ו-35, שבהם הוצגו סוגים של שירותים שפועלים בחזית. (ca06b2, b/364508145) - ממשקי API חדשים של
WorkerParametersשמאפשרים להחליף את התהליך המרוחק שאליוWorkerנקשר כשמשתמשים ב-WorkerFactory. (Ibdc8a, Ie8a90, I7373f)
תיקוני באגים
- תוקן קראש שנגרם בגלל ניסיון של
WorkManagerלהפעיל מחדש עובד שפועל לזמן רב (כלומר, עובד שפועל בחזית) כשההרשאות הנדרשות לסוג העבודה בחזית ב-Android 14 בוטלו. (b/333957914) - הסרנו את האפשרות ליצור באופן ידני תרשים של הגישה לממשקי API חדשים של הפלטפורמה, כי זה קורה אוטומטית באמצעות מידול API כשמשתמשים ב-R8 עם AGP 7.3 ואילך (למשל R8 גרסה 3.3) ובכל הגרסאות כשמשתמשים ב-AGP 8.1 ואילך (למשל D8 גרסה 8.1). לקוחות שלא משתמשים ב-AGP מומלץ לעדכן לגרסה 8.1 של D8 או לגרסה מאוחרת יותר. למידע נוסף, מומלץ לעיין במאמר הזה. (Ia60e0, b/345472586)
גרסה 2.10.0-alpha02
17 באפריל 2024
androidx.work:work-*:2.10.0-alpha02 מופץ. גרסה 2.10.0-alpha02 מכילה את השמירות האלה.
שינויים ב-API
- נוספה האפשרות לשלוח נתוני מעקב באמצעות
@RestrictToTracerשניתן להגדרה ב-WorkManager. (I17d7f, b/260214125) -
Configuration.workerCoroutineContextנוסף ל- כדי לשלוט ב-dispatcher במקום שבו מתבצעת הפעולהCoroutineWorker. הפעולה הזו עוזרת להימנע לחלוטין משימוש ב-Dispatchers.Defaultב-WorkManager. (Icd1b7) - הוספת handlers מותאמים אישית לחריגים ב-Workers (Ib1b74, b/261190695)
- אפשר עכשיו ליצור את
OneTimeWorkRequest.Builderו-PeriodicWorkRequest.BuilderבאמצעותKClassבמקוםClass:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()(Ib55f6) - הכיתה
WorkManagerהועברה ל-Kotlin. מעכשיו, שיטות שמחזירותLiveData,ListenableFutureאוFlowמספקות מידע נכון לגבי האפשרות להגדיר ערך null. יכול להיות שיהיה צורך לבצע שינויים בקוד המקור של הלקוחות, אם ההנחות לגבי מאפיין המציין אם ערך יכול להיות ריק (nullability) בקוד הזה היו שגויות. (If6757)
גרסה 2.10.0-alpha01
24 בינואר 2024
androidx.work:work-*:2.10.0-alpha01 מופץ. גרסה 2.10.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
- מפתחים יכולים לציין את
NetworkRequestכמגבלה לעובד באמצעות השיטהConstraints.setRequiredNetworkRequest. כך אפשר לקבוע בצורה מדויקת יותר באיזו רשת העובד הזה צריך לפעול.
שינויים ב-API
- הוספת אפשרות לציין את
NetworkRequestכאילוץ. (Id98a1, b/280634452)
גרסה 2.9
גרסה 2.9.1
7 באוגוסט 2024
androidx.work:work-*:2.9.1 מופץ. גרסה 2.9.1 מכילה את השמירות האלה.
תיקוני באגים
- תיקון קריסה שנגרמה בגלל
WorkManagerניסיון להפעיל מחדש תהליך עובד שפועל לזמן רב (כלומר, תהליך עובד שפועל בחזית) כשההרשאות הנדרשות ל-Android 14 עבור סוג העבודה שפועל בחזית בוטלו. (b/333957914)
גרסה 2.9.0
29 בנובמבר 2023
androidx.work:work-*:2.9.0 מופץ. גרסה 2.9.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.8.0
- ניראות (observability) באמצעות
Flow. במקוםLiveData, אפשר לעקוב אחרי ההתקדמות של העובד באמצעותWorkManager.getWorkInfosFlowשל Flow ושיטות דומות. - עכשיו
WorkManagerמספק רמז לגבי הסיבה להפסקה של העובד בעבר. אפשר לשלוח שאילתה מהעובד עצמו באמצעות שיטתgetStopReason()או מ-WorkInfoבאמצעותgetStopReason(). - תזמון מדויק של עובדים תקופתיים באמצעות
setNextScheduleTimeOverride. כך אפשר לחשב באופן דינמי את לוח הזמנים הבא של העבודה התקופתית, שאפשר להשתמש בו כדי להטמיע תכונות מתקדמות כמו זמני רענון דינמיים, התנהגות מותאמת של ניסיון חוזר או הפעלה של worker של עדכוני חדשות לפני שהמשתמש מתעורר כל בוקר בלי סחף. צריך להשתמש ב-ExistingPeriodicWorkPolicy.UPDATEעם הטכניקות האלה כדי למנוע ביטול של תהליך worker שפועל כרגע בזמן תזמון של התהליך הבא. - בדיקה של WorkManager עם התאמה של שרשורים לייצור. אפשר להשתמש ב-
ExecutorsMode.PRESERVE_EXECUTORSב-initializeTestWorkManagerכדי לשמור על מנהלי הפעולות שהוגדרו ב-Configurationולהשתמש בשרשור הראשי האמיתי. - ממשקי API של קורוטינות כמו
CoroutineWorkerהועברו מ-artifact נוסף work-runtime-ktx אל ה-artifact הראשי work-runtime. עכשיו work-runtime-ktx ריק.
שינויים ב-API
- המשתמש
stopReasonנוסף לקורסWorkInfo. הוא מאפשר להשתמש ב-stopReasonאחרי שה-Worker פעל. הוא יכול להיות שימושי בדיווחstopReasonבצורה שניתן להשתמש בה, כי אחרי שעובד מופסק, אפשר להרוג את האפליקציה עצמה במהירות רבה. (I21386) - אפשר להגדיר את
Clockבאמצעות קובץ הגדרה, ולהשתמש בו כדי לקבוע את סדר הביצוע של בדיקות Worker. (Ic586e) - הוספנו את השיטה
getStopReason()ל-ListenableWorkerכדי לספק רמז למה ה-worker הופסק. (I07060) - נוסף
WorkManagerTestInitHelper#closeWorkDatabase()כדי למנוע את האזהרה של Closeguard לגבי משאבים שנחשפו. (Ia8d49) - הקונסטרוקטור של
WorkInfoהוא עכשיו ציבורי, וזה יכול להיות שימושי לבדיקות. (Ia00b6, b/209145335) -
work-runtime-ktxריק עכשיו, ו-CoroutineWorkerכלי עזר אחרים שספציפיים ל-Kotlin זמינים עכשיו בארטיפקט של זמן הריצה הראשי. (I71a9a) - נוספה שיטת
setNextScheduleTimeOverride, שמאפשרת הגדרה מדויקת של לוחות זמנים תקופתיים לעבודה (I3b4da) - נוספה
getNextScheduleTimeMillisכדי לקבל מידע על זמן הריצה המתוזמן, שנוסף ל-WorkInfo. (I797e4) - פרטים על העיכוב הראשוני והמחזוריות מתווספים ל-
WorkInfo. (I52f2f) - נוספה שיטה למעקב אחרי עובדים דרך Flows באמצעות השיטות
getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow(If122a) - הערות חסרות מסוג
@RequiresApi(...)נוספו ל-Constraints' constructors ולמאפיינים. הן מיושרות עכשיו עם הערות תואמות בפונקציות setter ב-Constraints.Builderשהיו קיימות מגרסאות מוקדמות שלWorkManager. (I6d7d2) WorkManagerיש עכשיו מגבלה נפרדת לעובדי URI של תוכן כדי להבטיח להם משבצות ב-JobSchedulerולמנוע עדכוני תוכן חסרים בעומס גבוה. אפשר להגדיר את המגבלה באמצעותConfiguration.Builder.setContentUriTriggerWorkersLimit. (Ic128f)- נוספו אילוצים ל-
WorkInfo. (I162c0)
גרסה 2.9.0-rc01
18 באוקטובר 2023
androidx.work:work-*:2.9.0-rc01 מופץ. גרסה 2.9.0-rc01 מכילה את השמירות האלה.
- לא בוצעו שינויים מאז גרסת הבטא האחרונה
גרסה 2.9.0-beta01
6 בספטמבר 2023
androidx.work:work-*:2.9.0-beta01 מופץ. גרסה 2.9.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- נוספו קבועים לסיבות להפסקת ההחזרה של
WorkInfo.stopReasonו-ListenableWorker.stopReason(I0cc00)
גרסה 2.9.0-alpha02
26 ביולי 2023
androidx.work:work-*:2.9.0-alpha02 מופץ. גרסה 2.9.0-alpha02 מכילה את השמירות האלה.
תכונות חדשות
- עכשיו
WorkManagerמספק רמז לגבי הסיבה להפסקה של העובד בעבר. אפשר לשלוח שאילתה מהעובד עצמו באמצעות שיטתgetStopReason()או מ-WorkInfoבאמצעותgetStopReason().
שינויים ב-API
- המשתמש
stopReasonנוסף לקבוצהWorkInfo. הוא יהיה זמיןstopReasonאחרי שה-Worker יפעל. הוא יכול להיות שימושי בדיווחstopReasonבצורה שניתן להשתמש בה, כי אחרי שעובד הופסק, אפשר להרוג את האפליקציה עצמה במהירות רבה. (I21386) - אפשר להגדיר את השעון באמצעות קובץ הגדרה ולהשתמש בו כדי להפעיל את רצף הביצוע של בדיקות Worker. (Ic586e)
- הוספנו את השיטה
getStopReason()ל-ListenableWorkerכדי לספק רמז למה ה-worker הופסק. (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. במקוםLiveData, אפשר לעקוב אחרי ההתקדמות של העובד באמצעותWorkManager.getWorkInfosFlowשל Flow ושיטות דומות. - תזמון מדויק של עובדים תקופתיים באמצעות
setNextScheduleTimeOverride. כך אפשר לחשב באופן דינמי את לוח הזמנים הבא של העבודה התקופתית, שאפשר להשתמש בו כדי להטמיע תכונות מתקדמות כמו זמני רענון דינמיים, התנהגות מותאמת של ניסיון חוזר או הפעלה של תהליך עבודה של עדכון פיד החדשות לפני שהמשתמש מתעורר כל בוקר בלי סחף.ExistingPeriodicWorkPolicy.UPDATEצריך לשמש עם הטכניקות האלה כדי למנוע ביטול של תהליך worker שפועל כרגע בזמן תזמון התהליך הבא. WorkManagerהבדיקה שלכם צריכה להתבצע עם התאמה של השרשור להפקה. אפשר להשתמש ב-ExecutorsMode.PRESERVE_EXECUTORSכדי לשמור על קובצי ההפעלה שהוגדרו ב-Configurationולהשתמש בשרשור הראשי האמיתי.- ממשקי API של קורוטינות, כמו
CoroutineWorker, הועברו מארטיפקט נוסףwork-runtime-ktxלארטיפקט הראשיwork-runtime. השדהwork-runtime-ktxריק עכשיו.
שינויים ב-API
- ה-constructor של
WorkInfoהוא עכשיו ציבורי, וזה יכול להיות שימושי לבדיקות. (Ia00b6, b/209145335) -
work-runtime-ktxריק עכשיו,CoroutineWorkerוכלי עזר אחרים שספציפיים ל-Kotlin זמינים עכשיו בארטיפקט הראשיwork-runtime. (I71a9a) - נוספה שיטת
setNextScheduleTimeOverride, שמאפשרת הגדרה מדויקת של לוחות זמנים תקופתיים לעבודה (I3b4da) - השם של
getEarliestRunTimeMillisשונה לgetNextScheduleTimeMillis. (I2bd7a) - פרטי זמן ההפעלה המתוזמנת הבאה נוספים ל-
WorkInfo. (I797e4) - פרטים על העיכוב הראשוני והמחזוריות מתווספים ל-
WorkInfo. (I52f2f) - נוספה שיטה למעקב אחרי עובדים דרך Flows באמצעות השיטות
getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow(If122a) - הערות
@RequiresApi(...)שהיו חסרות נוספו לבוני (constructor) ולמאפיינים של Constraints. הן מיושרות עכשיו עם הערות תואמות בפונקציות setter ב-Constraints.Builderשהיו קיימות מגרסאות מוקדמות שלWorkManager. (I6d7d2) WorkManagerיש עכשיו מגבלה נפרדת לעובדי URI של תוכן כדי להבטיח להם משבצות ב-JobSchedulerולמנוע עדכוני תוכן חסרים בעומס גבוה. אפשר להגדיר את המגבלה דרךConfiguration.Builder.setContentUriTriggerWorkersLimit. (Ic128f)- האילוצים נוספים ל-
WorkInfo. (I162c0)
גרסה 2.8
גרסה 2.8.1
22 במרץ 2023
androidx.work:work-*:2.8.1 מופץ. גרסה 2.8.1 מכילה את השמירות האלה.
תיקוני באגים
- נפתרה בעיית ANR ב-
RescheduleReceiverשבעבר לא טיפלה בצורה נכונה בשני שידורים בו-זמנית. (b/236906724)
גרסה 2.8.0
8 בפברואר 2023
androidx.work:work-*:2.8.0 מופץ. גרסה 2.8.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.7.0
תכונות חדשות
- נוספה אפשרות לעדכן את
WorkRequestsבצורה לא פולשנית, תוך שמירה על זמן ההוספה המקורי לתור, השרשור וכו'. לפרטים נוספים אפשר לעיין בפוסט המפורט בבלוג בנושא התכונה הזו, וגם ב-javadocs שלWorkManager.updateWorkושלExistingPeriodicWorkPolicy.UPDATE.
שינויים ב-API
-
WorkManager.updateWorkנוסף כדי לעדכן עבודה תוך שמירה על זמן ההוספה לתור המקורי ועל השרשור שלה.(I9a248, b/219446409) - הוספנו את
ExistingPeriodicWorkPolicy.UPDATE. המדיניות הזו מאפשרת לעדכן עבודה תקופתית לפי השם. הוא דומה ל-REPLACEהקיים, אבל הוא פחות פולשני: הוא לא מבטל worker אם הוא פועל כרגע, והוא שומר על זמן ההמתנה בתור – העיכוב הראשוני והתקופה מחושבים מזמן ההמתנה המקורי בתור, ולא מזמן העדכון. הוצאנו אתREPLACEמשימוש כדי לצמצם את הבלבול ביןREPLACEלביןUPDATE, ששמותיהם דומים מאוד. אם עדיין רוצים לשמור על הסמנטיקה הקודמת שלREPLACE, אפשר להשתמש ב-CANCEL_AND_REENQUEUEהחדש שנוסף, שהוא זהה ל-REPLACE. (I985ed, b/219446409) - נוספה האפשרות ליירט חריגות בתזמון באמצעות
Consumer<Throwable>דרך setSchedulingExceptionHandler) - הוספנו את האפשרות לספק
Consumer<Throwable>דרך setInitializationExceptionHandler כדי לקבוע אם היו בעיות בניסיון לאתחל את WorkManager. - העברנו את העזרה המובנית ל-
OneTimeWorkRequestו-PeriodicWorkRequestמ-androidx.work:work-runtime-ktxל-androidx.work:work-runtime(I0010f, b/209145335) - נוספו שיטות עזר
WorkQuery.fromIds,WorkQuery.fromStates,WorkQuery.fromUniqueWorkNames,WorkQuery.fromTagsכדי ליצור אתWorkQueryישירות. (b/199919736) (If48f2, b/199919736) getForegroundInfoנוסף לרשימהWorker. (Ic1ead)-
RxWorkerגם ל-RxJava 2 וגם ל-RxJava 3 יש עכשיוsetForegroundשמחזירCompletableשאפשר להשתמש בו במקוםsetForegroundInfoAsyncשמחזירListenableFuture -
RxWorkerגם ל-RxJava 2 וגם ל-RxJava 3 ישgetForegroundInfoשמחזירSingleשאפשר להשתמש בו במקוםgetForegroundInfoAsyncשמחזירListenableFuture. (b/203851459) - מעכשיו אפשר ליצור אילוצים ישירות במקום להשתמש ב-
Constraints.Builder, וזה נוח למשתמשי Kotlin. (Idc390, b/137568653) - נוספה האפשרות לבדוק אם בוצעה אתחול של
WorkManager. בנוסף, נוסףgetConfiguration()API חדש למפתחי ספריות, שמאפשר לקבל את ההגדרה שבוצעה באמצעותWorkManager. (I6eff3, b/212300336)
תיקוני באגים
- תוקנה בעיה בתזמן חמדן שגרמה לכך שעובדים לא יפעלו באופן מיידי כשהם נמצאים בעומס. (I9686b, b/248111307)
- הוספנו את
@RequiresPermissionלממשקי API שנדרשת בהם הרשאתPOST_NOTIFICATIONSב-SDK 33 ומעלה. (Ie542e, b/238790278) - העברת ביטולים ב-
CoroutineScopeאלListenableFutureכשמשתמשים ב-suspendCancellableCoroutine.
גרסה 2.8.0-rc01
7 בדצמבר 2022
androidx.work:work-*:2.8.0-rc01 מופץ. גרסה 2.8.0-rc01 מכילה את השמירות האלה.
תכונות חדשות
- אין תכונות חדשות בגרסה הזו. מדובר בעיקר בעלייה בגרסה
גרסה 2.8.0-beta02
9 בנובמבר 2022
androidx.work:work-*:2.8.0-beta02 מופץ. גרסה 2.8.0-beta02 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה השיטה
equalsב-WorkInfo, שלא הביאה בחשבון מידע על דור חדש. (4977cc)
גרסה 2.8.0-beta01
5 באוקטובר 2022
androidx.work:work-*:2.8.0-beta01 מופץ. גרסה 2.8.0-beta01 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה בתזמן חמדן שגרמה לכך שעובדים לא יפעלו באופן מיידי כשהם נמצאים בעומס. (I9686b, b/248111307)
גרסה 2.8.0-alpha04
7 בספטמבר 2022
androidx.work:work-*:2.8.0-alpha04 מופץ. גרסה 2.8.0-alpha04 מכילה את השמירות האלה.
שינויים ב-API
- נוספו הפונקציות
WorkerInfo.getGeneration()ו-WorkerParameters.getGeneration()שמחזירות את הדור של העובד. לעובד יש כמה דורות אם הוא עודכן באמצעותWorkManager.updateWorkאוWorkManager.enqueueUniquePeriodicWorkבאמצעותExistingPeriodicWorkPolicy.UPDATE. הערה: אם ה-Worker פועל כרגע, יכול להיות שהשיטה הזו תחזיר דור חדש יותר מזה של ה-Worker שפועל כרגע, אם התרחש עדכון במהלך ההפעלה של ה-Worker. (I665c5, b/219446409) (I128a9, b/219446409) - הוספנו את
InitializationExceptionHandler, כלי לטיפול בחריגים שאפשר להשתמש בו כדי לקבוע אם היו בעיות בניסיון לאתחל אתWorkManager. (I061de)
גרסה 2.8.0-alpha03
10 באוגוסט 2022
androidx.work:work-*:2.8.0-alpha03 מופץ. גרסה 2.8.0-alpha03 מכילה את השמירות האלה.
תכונות חדשות
- נוספה אפשרות לעדכן את
WorkRequestsבצורה לא פולשנית, תוך שמירה על זמן ההוספה לתור המקורי, השרשור וכו'. פרטים נוספים זמינים במאמריםWorkManager.updateWorkוExistingPeriodicWorkPolicy.UPDATE.
שינויים ב-API
-
WorkManager.updateWorkנוסף כדי לעדכן עבודה ולשמור על זמן ההוספה לתור המקורי ועל השרשור שלה.(I9a248, b/219446409) - הוספנו את
ExistingPeriodicWorkPolicy.UPDATE. המדיניות הזו מאפשרת לעדכן עבודה תקופתית לפי השם. הוא דומה ל-REPLACEהקיים, אבל הוא פחות פולשני: הוא לא מבטל עובד אם הוא פועל כרגע, והוא שומר על זמן ההמתנה בתור – העיכוב הראשוני והתקופה מחושבים מזמן ההמתנה המקורי בתור, ולא מזמן העדכון. הפסקנו את השימוש ב-REPLACEכדי לצמצם את הבלבול ביןREPLACEלביןUPDATE, שהשמות שלהם דומים מאוד. אם אתם עדיין רוצים לשמור על הסמנטיקה הקודמת שלREPLACE, אתם יכולים להשתמש ב-CANCEL_AND_REENQUEUEשנוסף לאחרונה, שהוא זהה ל-REPLACE. (I985ed, b/219446409) - מוסיפים את היכולת ליירט חריגים בתזמון על ידי הגדרת
SchedulingExceptionHandler. (I033eb) - העברנו את העזרה המובנית ל-
OneTimeWorkRequestו-PeriodicWorkRequestמ-androidx.work:work-runtime-ktxל-androidx.work:work-runtime(I0010f, b/209145335)
תיקוני באגים
- הוספנו את
@RequiresPermissionלממשקי API שנדרשת בהם הרשאת POST_NOTIFICATIONS ב-SDK 33 ומעלה. (Ie542e, b/238790278)
גרסה 2.8.0-alpha02
6 באפריל 2022
androidx.work:work-*:2.8.0-alpha02 מופץ. גרסה 2.8.0-alpha02 מכילה את השמירות האלה.
שינויים ב-API
- מעכשיו אפשר ליצור אילוצים ישירות במקום להשתמש ב-Builder, וזה נוח למשתמשי Kotlin. (Idc390, b/137568653)
- נוספה האפשרות לבדוק אם בוצעה אתחול של
WorkManager. בנוסף, נוסףgetConfiguration()API חדש למפתחי ספריות, שמאפשר לקבל את ההגדרה שבוצעה באמצעותWorkManager. (I6eff3, b/212300336)
גרסה 2.8.0-alpha01
12 בינואר 2022
androidx.work:work-*:2.8.0-alpha01 מופץ. גרסה 2.8.0-alpha01 מכילה את השמירות האלה.
שינויים ב-API
- נוספו שיטות עזר
WorkQuery.fromStates,WorkQuery.fromUniqueWorkNames,WorkQuery.fromTagsכדי ליצור WorkQuery ישירות. (If48f2, b/199919736) - נוספו שיטות ניסיוניות של BuildCompat ל-SDK עתידיים (Iafd82, b/207528937)
- הוספת
getForegroundInfoאלWorker. (Ic1ead) - נוספו שיטות עזר
WorkQuery.fromIdsליצירת WorkQuery ישירות ממזהים (Ie5bdf, b/199919736) - ל-RxWorker יש עכשיו
setForegroundשמוחזר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 מוצג
WorkRequest.Builder.setExpedited(...)API חדש שיעזור לכם להתמודד עם ההגבלות על שירותים שפועלים בחזית ב-Android 12.כשמשתמשים ב-
setExpedited(...), WorkManager מבצע העברה של משימות דחופות ל-JobScheduler החל מ-Android 12, ומספק תאימות לאחור בגרסאות קודמות של Android על ידי העברה לשירות שפועל בחזית.
גרסה 2.7.0-rc01
29 בספטמבר 2021
androidx.work:work-*:2.7.0-rc01 מופץ. גרסה 2.7.0-rc01 מכילה את השמירות האלה.
הגרסה הזו זהה לגרסה androidx.work:work-*:2.7.0-beta01.
גרסה 2.7.0-beta01
1 בספטמבר 2021
androidx.work:work-*:2.7.0-beta01 מופץ. גרסה 2.7.0-beta01 מכילה את השמירות האלה.
תכונות חדשות
- הפחתת התחרות על SQLite מרובה-תהליכים במהלך אתחול WorkManager.
שינויים ב-API
- הסרנו את ממשקי ה-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 כשאפשר. כדי לתמוך טוב יותר במצבים שבהם האפליקציה לא כפופה להגבלות על שירותים שפועלים בחזית, המפתחים יכולים להשתמש ב-APIListenableWorker.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:תמיכה ב-worker מרובה תהליכים ל-setProgressAsync(). (Ib6d08) - מתוך WorkManager
2.6.0-alpha02:הופכים אתWorkManagerInitializerלציבורי כדי ש-androidx.startup.Initializerאחרים יוכלו להשתמש בו כתלות. (I5ab11)
גרסה 2.7.0-alpha02
10 במרץ 2021
androidx.work:work-*:2.7.0-alpha02 מופץ. גרסה 2.7.0-alpha02 מכילה את השמירות האלה.
תיקוני באגים
- כדי לתקן קריסה כשמטרגטים ל-Android מגרסה 12, צריך להגדיר את יכולת השינוי של
PendingIntentבאופן מפורש. (b/180884673)
גרסה 2.7.0-alpha01
18 בפברואר 2021
androidx.work:work-*:2.7.0-alpha01 מופץ. גרסה 2.7.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
ב-WorkManager יש
WorkRequest.Builder.setExpedited(...)API חדש שמתחשב בהגבלות על שירות שפועל בחזית ב-Android 12.אפליקציות לא יכולות יותר להפעיל שירות שפועל בחזית כשהן פועלות ברקע. לכן, כדי לתמוך טוב יותר בעבודה שמתבצעת לאורך זמן ושבעבר הייתה קשורה למחזור החיים של שירות שפועל בחזית, אפליקציות יכולות לסמן
WorkRequests כמזורזים.ממשק ה-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) - תמיכה ב-workers מרובים בתהליך עבור
setProgressAsync(). (Ib6d08) - הופכים את
WorkManagerInitializerלגלוי לכולם כדי ש-androidx.startup.Initializers אחרים יוכלו להשתמש בהם כתלות. (I5ab11)
גרסה 2.6.0-alpha01
24 במרץ 2021
androidx.work:work-*:2.6.0-alpha01 מופץ. גרסה 2.6.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
WorkManagerמשתמש עכשיו ב-androidx.startupכדי לאתחל את WorkManager. בעבר, הפעולה הזו בוצעה על ידיandroidx.work.impl.WorkManagerInitializer. (aosp/1608813)אם השתמשתם ב-
tools:node="remove"ContentProviderבעבר כדי לאתחל את מחזור החיים של התהליך, אתם צריכים לבצע את הפעולות הבאות במקום זאת.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.impl.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>(או)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
שינויים ב-API
- הוספת
Result.getOutputData()API שמחזיר אתoutputDataשל ListenableWorker. (Ie51e3)
תיקוני באגים
- הוספת פתרון עקיף לבאג ב-OEM שגורם להצגת
SecurityExceptionכשמשתמשים בממשקי ה-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)
- תוקן באג שגרם להתעלמות מ-
NoSuchElementExceptions בניסיון לבטל את הקישור לתהליך שהסתיים. (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מגבילה באופן אוטומטי את מספר ה-WorkRequests שאפשר לאסוף באמצעות מתזמן התהליכים. הבקשות עדיין מבוצעות בסדר 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 מכילה את השמירות האלה.
תכונות חדשות
- כדי להשתמש ב-
ids כדי לשלוח שאילתות ל-WorkInfos, צריך להוסיף API ל-WorkQuery. (aosp/1412372, b/157335295) - WorkManager תומך טוב יותר באפליקציות שמשתמשות בכמה תהליכים באמצעות ארטיפקט חדש (
androidx.work:work-multiprocess:*). הארטיפקט החדש הזה עוזר לפתור כמה בעיות שקיימות באפליקציות גדולות, כולל:- בדרך כלל צריך להפעיל את WorkManager בכל תהליך של אפליקציה. זה לא טוב כי יש יותר תחרות על SQLite, שגורמת לבעיות אחרות. ל-WorkManager יש עכשיו ממשקי API חדשים שאפשר להשתמש בהם כדי להגדיר תהליך של אפליקציה ראשית באמצעות
Configuration#setDefaultProcessName(processName). processNameהוא שם תהליך שמוגדר במלואו ונראה כך:packageName:processName(למשל,com.example:remote). - קבוצה של ממשקי API חדשים:
RemoteWorkManagerו-RemoteWorkContinuationלבקשות עבודה שלenqueue,cancelו-query. ממשקי ה-API האלה לא כוללים וריאציות שלLiveDataכדי למנוע התנגשות של SQLite בכמה תהליכים. כל השיחות אלenqueue,cancelו-queryמועברות לתהליך של אפליקצייתprimaryבאמצעות AIDL, ומוחזרתListenableFutureשוטפת. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- בדרך כלל צריך להפעיל את WorkManager בכל תהליך של אפליקציה. זה לא טוב כי יש יותר תחרות על SQLite, שגורמת לבעיות אחרות. ל-WorkManager יש עכשיו ממשקי API חדשים שאפשר להשתמש בהם כדי להגדיר תהליך של אפליקציה ראשית באמצעות
שינויים ב-API
- WorkManager מבצע עכשיו גיזום של
WorkRequests שהושלמו ושאין להם תלות לא מושלמת בצורה אגרסיבית יותר. משך תקופת ההמתנה השתנה מ-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בעתיד. בקרוב נפרסם עדכונים נוספים.
תיקוני באגים
- טיפול ב-
SecurityExceptions כשעוקבים אחרי מצב הרשת במכשירים מסוימים. (aosp/1396969)
External Contribution
- תיקון חומרי העזר בנושא
ArrayCreatingInputMergerמאת Zac Sweers (github/43).
גרסה 2.4.0
גרסה 2.4.0
22 ביולי 2020
androidx.work:work-*:2.4.0 מופץ. גרסה 2.4.0 מכילה את השמירות האלה.
שינויים משמעותיים מאז גרסה 2.3.0
WorkManagerהתזמון של תהליכים בתהליך עכשיו יעיל יותר. בעבר,Schedulerהיה מתייחס רק לעבודה שלא עוכבה ושעמדה באילוצים. עכשיו, מתזמן התהליכים עוקב אחריWorkRequests שאולי יופעלו בעתיד, כולל PeriodicWorkRequests. גםSchedulerבתהליך לא מתחשב במגבלות התזמון (אבל הוא עדיין מוגבל לגודל שלExecutorשנעשה בו שימוש על ידי WorkManager). המשמעות היא שהאפליקציה יכולה עכשיו להריץ הרבה יותר WorkRequests כשהיא בחזית. כדי לנהל את ההפעלה של עבודה מושהית בחזית,WorkManagerמציגה גםRunnableSchedulerחדש שאפשר להגדיר. (aosp/1185778)- WorkManager תומך עכשיו ב-RxJava 3. כדי להשתמש ב-RxJava 3, צריך לכלול את יחסי התלות הבאים:
implementation "androidx.work:work-rxjava3:2.4.0". (aosp/1277904) - נוספה האפשרות לשלוח שאילתות לגבי
WorkInfoבאמצעותWorkQuery. האפשרות הזו שימושית כשמפתחים רוצים לשלוח שאילתות ל-WorkInfos לפי שילוב של כמה מאפיינים. מידע נוסף זמין במאמריםWorkQuery.Builder.fromStates(...),WorkQuery.Builder. fromTags(...)אוWorkQuery.Builder.fromUniqueWorkNames(...). (aosp/1253230, b/143847546) הוספת האפשרות לבקש מידע אבחוני מ-
WorkManagerבאמצעות:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"הוא מספק הרבה מידע שימושי, כולל:
- בקשות עבודה שהושלמו ב-24 השעות האחרונות.
- בקשות WorkRequest שנמצאות כרגע במצב RUNNING.
- בקשות עבודה מתוזמנות. (aosp/1235501)
הוספת
ExistingWorkPolicy.APPEND_OR_REPLACE, שדומה ל-APPEND, אבל מחליפה שרשרת שבוטלה או שלא עמדה בדרישות המוקדמות. (b/134613984, aosp/1199640)אפשרות להוסיף
RunnableSchedulerמותאם אישית כדי לעקוב אחרי בקשות עבודה שצריך לבצע בעתיד. ההגדרה הזו משמשת את הכלי לתזמון שנמצא בתהליך. (aosp/1203944)הוספנו תמיכה בהוספה דינמית של מפעלים להעברה, כשמשתמשים ב-
DelegatingWorkerFactory. (b/156289105, aosp/1309745)התאמה של המעקב אחר מגבלות
BATTERY_NOT_LOWלפלטפורמה. (aosp/1312583)מתזמן התהליכים משתמש עכשיו בממשקי API טובים יותר כדי לקבוע את שם התהליך. האפשרות הזו שימושית כדי לשפר את התמיכה באפליקציות שמשתמשות במספר תהליכים. (aosp/1324732)
כללי Lint חדשים שמבטיחים:
- שימוש ב-
foregroundServiceTypeהנכון כשמשתמשים בממשקי API שלsetForegroundAsync(). (b/147873061, aosp/1215915) - ציון מזהים של JobScheduler ש-WorkManager צריך להשתמש בהם כשמשתמשים ישירות בממשקי JobService API. aosp/1223567
- הוספנו כלל חדש של lint שמוודא שההטמעות של
ListenableWorkerהן עכשיוpublicכשמשתמשים ב-WorkerFactoryשמוגדר כברירת מחדל. (aosp/1291262)
- שימוש ב-
קריאות ל-
setForegroundAsync()שלא הושלמו לפני השלמתListenableWorkerיסומנו עכשיו באמצעותIllegalStateExceptionב-ListenableFutureשמוחזר. (aosp/1262743)תוקן באג שגרם לכך ש-
ForegroundServiceלא הופסק אחרי ש-Workerבחזית הופרע. (b/155579898, aosp/1302153)תוקן באג שבו
WorkManagerמנסה להפעיל כמה מופעים שלWorkerשקשורים לשירות Foreground (b/156310133, aosp/1309853)
גרסה 2.4.0-rc01
24 ביוני 2020
androidx.work:work-*:2.4.0-rc01 מופץ. גרסה 2.4.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- מתזמן התהליכים משתמש עכשיו בממשקי API טובים יותר כדי לקבוע את שם התהליך. האפשרות הזו שימושית כדי לשפר את התמיכה באפליקציות שמשתמשות במספר תהליכים. (aosp/1324732)
גרסה 2.4.0-beta01
20 במאי 2020
androidx.work:work-gcm:2.4.0-beta01, androidx.work:work-runtime:2.4.0-beta01, androidx.work:work-runtime-ktx:2.4.0-beta01, androidx.work:work-rxjava2:2.4.0-beta01 וגם androidx.work:work-testing:2.4.0-beta01 יוצאים לאור. גרסה 2.4.0-beta01 מכילה את השמירות האלה.
תיקוני באגים
- תוקן באג שגרם לכך ש-
ForegroundServiceלא הופסק אחרי ש-Workerבחזית הופרע. (b/155579898, aosp/1302153) - תוקן באג שבו
WorkManagerמנסה להפעיל כמה מופעים שלWorkerשקשורים לשירות Foreground (b/156310133, aosp/1309853) - הוספנו תמיכה בהוספה דינמית של מפעלים להעברה, כשמשתמשים ב-
DelegatingWorkerFactory. (b/156289105, aosp/1309745) - התאמה של המעקב אחר מגבלות
BATTERY_NOT_LOWלפלטפורמה. (aosp/1312583)
גרסה 2.4.0-alpha03
29 באפריל 2020
androidx.work:work-*:2.4.0-alpha03 מופץ. גרסה 2.4.0-alpha03 מכילה את השמירות האלה.
תכונות חדשות
- WorkManager תומך עכשיו ב-RxJava 3. כדי להשתמש ב-RxJava 3, צריך לכלול את יחסי התלות הבאים:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03". (aosp/1277904) - הוספנו כלל חדש של lint שמוודא שההטמעות של
ListenableWorkerהן עכשיוpublicכשמשתמשים ב-WorkerFactoryשמוגדר כברירת מחדל. (aosp/1291262)
שינויים ב-API
- התקשרות אל
setProgressAsync()אחרי ש-ListenableWorkerסיים את ההרצה תאותת עכשיו עלExceptionדרךListenableFuture. (aosp/1285494) - הסרטון
WorkQuery.Builderמסומן עכשיו בתגfinal. (aosp/1275037) - השמות של
WorkQuery.Builderfactory methodswithStates,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 שמוצגת לגביו אזהרה כש-
WorkRequests דורש גםConstraints.setRequiresCharging(...)וגםConstraints.setRequiresDeviceIdle(...). חלק מהמכשירים אף פעם לא נטענים ונמצאים במצב המתנה בו-זמנית. לכן, בקשות כאלה יופעלו בתדירות נמוכה מהצפוי. (aosp/1253840)
שינויים ב-API
נוספה האפשרות לשלוח שאילתות לגבי
WorkInfoבאמצעותWorkQuery. האפשרות הזו שימושית כשמפתחים רוצים לשלוח שאילתות ל-WorkInfos לפי שילוב של כמה מאפיינים. מידע נוסף זמין במאמרים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התזמון של תהליכים בתהליך עכשיו יעיל יותר. בעבר, מתזמן הפעולות בתהליך היה מריץ רק משימות שלא נדחו ועמדו באילוצים. מעכשיו, מתזמן התהליכים עוקב אחריWorkRequests שעשויים להתבצע בעתיד, כוללPeriodicWorkRequests. גם המתזמן בתהליך לא מתחשב במגבלות התזמון (אבל הוא עדיין מוגבל לגודל שלExecutorשנעשה בו שימוש על ידי WorkManager). המשמעות היא שהאפליקציה יכולה עכשיו להריץ הרבה יותרWorkRequests כשהיא פועלת ברקע. (aosp/1185778)נוספה האפשרות לבקש מידע אבחוני מ-WorkManager באמצעות
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>". הוא מספק הרבה מידע שימושי, כולל:- בקשות עבודה שהושלמו ב-24 השעות האחרונות.
- בקשות WorkRequest שנמצאות כרגע במצב RUNNING.
- בקשות עבודה מתוזמנות. (aosp/1235501)
כללי Lint חדשים שמבטיחים:
- שימוש ב-
foregroundServiceTypeהנכון כשמשתמשים בממשקי API שלsetForegroundAsync(). (b/147873061, aosp/1215915) - ציון מזהי
JobSchedulerשצריך להשתמש בהםWorkManagerכשמשתמשים ישירות בממשקיJobServiceAPI. (aosp/1223567)
- שימוש ב-
שינויים ב-API
הוספה של
ExistingWorkPolicy.APPEND_OR_REPLACE, שדומה ל-APPEND, אבל מחליף שרשרת שבוטלה או שלא עמדה בדרישות המוקדמות. (b/134613984, aosp/1199640)אפשרות להוסיף
RunnableSchedulerבהתאמה אישית כדי לעקוב אחריWorkRequestשצריך לבצע בעתיד. הוא נמצא בשימוש בתהליך התזמון. (aosp/1203944)
תיקוני באגים
- הפונקציה
setProgress()הוצאה משימוש ב-RxWorkerכי היא החזירה בעבר את הערךSingle<Void>, שהוא סוג בלתי אפשרי. הוספנו API חדש,setCompletableProgress(), שמחזיר במקום זאתCompletable, והוספנו כללי Lint חדשים שעוזרים לבצע מיגרציה לממשקי ה-API החדשים. (b/150080946, aosp/1242665)
גרסה 2.3.4
גרסה 2.3.4
18 במרץ 2020
androidx.work:work-*:2.3.4 מופץ. גרסה 2.3.4 מכילה את השמירות האלה.
תיקוני באגים
- תוקן באג שגרם להפעלה של כמה מופעים של
Workers שנמשכו זמן רב, אחרי חריגה מחלון הביצוע של 10 דקות. (aosp/1247484, b/150553353) - תיקון ל-lint של WorkManager
IssueRegistry. תודה ל-@ZacSweers מ-Slack על התרומה. (aosp/1217923)
גרסה 2.3.3
גרסה 2.3.3
4 במרץ 2020
androidx.work:work-*:2.3.3 מופץ. גרסה 2.3.3 מכילה את השמירות האלה.
תיקוני באגים
- תוקן באג שגרם לכך שאם
Workerנקטע, הוא לא מתוזמן מחדש בצורה נכונה. (b/150325687, aosp/1246571)
גרסה 2.3.2
גרסה 2.3.2
19 בפברואר 2020
androidx.work:work-*:2.3.2 מופצים. גרסה 2.3.2 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה WorkManager חורג ממגבלת 100 המשימות ב-JobScheduler במקרים נדירים. (aosp/1226859, b/149092520)
- תיקון של מרוץ תהליכים ב-ConstraintControllers. (aosp/1220100)
- שופר ניהול מחזור החיים של שירותים שפועלים בחזית עבור מופעי Worker שפועלים לזמן רב. (aosp/1226295)
- שיפרנו את ניהול הביטול של התראות לעובדים שפועלים לזמן רב, כשמבטלים עובד. (aosp/1228346)
גרסה 2.3.1
גרסה 2.3.1
5 בפברואר 2020
androidx.work:work-*:2.3.1 מופץ. גרסה 2.3.1 מכילה את השמירות האלה.
תיקוני באגים
- ניהול טוב יותר של מחזור החיים של
Notifications עבורWorkers שפועלים לאורך זמן כשה-Serviceבחזית פעיל. (aosp/1218539, b/147249312) -
WorkManagerתלוי עכשיו ב-androidx.sqlite:sqlite-framework:2.1.0יציב. (aosp/1217729) - הוספנו כללי lint כדי לוודא ש-
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 אורז עכשיו כללי lint נוספים כחלק מהספרייה, מה שעוזר לזהות באגים בשלב מוקדם.
גרסה 2.3.0-rc01
8 בינואר 2020
androidx.work:work-*:2.3.0-rc01 מופץ. גרסה 2.3.0-rc01 מכילה את השמירות האלה.
הגרסה הזו זהה לגרסה 2.3.0-beta02
תיקוני באגים
- Artifact
work-testingמגדיר עכשיו תלות ב-apiב-work-runtime-ktx. (aosp/1194410)
גרסה 2.3.0-beta02
18 בדצמבר 2019
androidx.work:work-*:2.3.0-beta02 מופץ. גרסה 2.3.0-beta02 מכילה את השמירות האלה.
תכונות חדשות
- הוספנו הודעת שגיאה משופרת לחריגות של SQLite שלא ניתן לשחזר. (aosp/1185777)
- נוסף כלל Lint שמוודא שספק התוכן
androidx.work.impl.WorkManagerInitializerמוסר מ-AndroidManifest.xmlכשמשתמשים באתחול לפי דרישה. (aosp/1167007) - נוספה אזהרת lint כשמשתמשים ב-
enqueue()בשבילPeriodicWorkRequestבמקוםenqueueUniquePeriodicWork(). (aosp/1166032)
שינויים ב-API
- כשמשתמשים ב-
ListenableWorker.setForegroundAsync(), צריך לציין אתnotificationIdשבו רוצים להשתמש ב-ForegroundInfo. זהו שינוי שעלול לגרום לבעיות. כך תוכלו להריץ כמהWorkers ארוכים במקביל. WorkManagerגם מנהל טוב יותר את משך החיים של ה-Notificationשסופקו. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
תיקוני באגים
- תוקן באג בהטמעה של AlarmManager שגרם לכך שהתראות לא נוקו בצורה תקינה. (aosp/1156444)
- תוקן באג שבו רשימה ריקה של
WorkRequests גרמה ליצירה של שרשרת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 שמקל על ביטולWorkRequests בלי צורך לרשום רכיב נוסף ב-AndroidManifest.xml. ממשק ה-API הזה מאפשר לבטל בקלות רבה במיוחד מינויים ל-WorkRequestמ-Notification. אנחנו מצפים שהשימוש ב-API הזה יהיה בשילוב עם ממשקי ה-API החדשים של הפעלה ברקע בגרסה 2.3.0. - WorkManager תלוי עכשיו ב-
androidx.room:*:2.2.0stable.
שינויים ב-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
- השם של
containsKeyAPI ב-Dataהשתנה ל-hasKeyWithValueOfType. גם השם של שיטת ההרחבה התואמת בספרייהktxשונה. (b/141916545)
תיקוני באגים
- WorkManager מתזמן את העבודה בצורה הוגנת כשמספר ה-
WorkRequests בתור מתקרב למגבלות התזמון. (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 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תכונות חדשות
- מעכשיו, אפשר להגדיר את ההתקדמות באמצעות
setProgressAsync()ListenableWorkerAPI. בנוסף, הוספנו API תואם שלsuspend-ingsetProgressב-CoroutineWorkerו-setProgressב-RxWorkerשמחזירSingle<Void>. בעזרת ממשקי ה-API החדשים האלה, אפשר להעביר מידע על ההתקדמות באמצעותWorkInfo, שיש לו API תואםgetProgress. (b/79481554) - ל-
Dataיש APIcontainsKey()שאפשר להשתמש בו כדי לאמת שלנתוני הקלט ל-Workerיש מפתחות עם הסוג הצפוי. (b/117136838) - עכשיו אפשר לבצע סריאליזציה של
DataבאמצעותData.toByteArray()ו-Data.fromByteArray(). שימו לב שאין ערבויות לגבי ניהול גרסאות ב-Data, ולכן לא מומלץ לשמור אותו או להשתמש בו לתקשורת בין תהליכים (IPC) בין אפליקציות. הם בטוחים לשימוש רק בין כמה תהליכים של אותה אפליקציה. - נוספה האפשרות לציין
InputMergerFactoryבאמצעותConfiguration.setInputMergerFactory. (b/133273159)
שינויים ב-API
- WorkManager יקפיץ הודעת שגיאה (throw) של
IllegalStateExceptionאםWorkerFactoryמחזיר מופע שלListenableWorkerשהופעל בעבר. (b/139554406) - עדכנו את המסמכים בנושא ביטול של
ListenableFutureוהחזרת נתונים (callback) שלonStopped()ב-ListenableWorker. (b/138413671)
תיקוני באגים
- מעכשיו, כשהתזמון מתבצע, המערכת מתעלמת מ-
WorkRequestעם האילוץidle. עכשיו, בקשות כאלה נאספות על ידיJobSchedulerרק כשהמכשיר נמצא בפועל בidle. (aosp/1089779) -
TestSchedulerמשתמש עכשיו בצורה נכונה ב-Executorשצוין עבור מנהל הביצוע של המשימות הפנימיות שלו בבדיקות. (aosp/1090749)
גרסה 2.2.0
גרסה 2.2.0
15 באוגוסט 2019
androidx.work:work-*:2.2.0 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
הגרסה הזו זהה לגרסה androidx.work:work-*:2.2.0-rc01.
שינויים חשובים בגרסה 2.2.0 לעומת גרסה 2.1.0
androidx.work:work-gcm:2.2.0 הוא ארטיפקט חדש של Maven שתומך בשימוש ב-GCMNetworkManager כמתזמן כש-Google Play Services זמין לרמות API <= 22. זוהי תלות אופציונלית שעוזרת לעיבוד ברקע להיות אמין יותר ולשפר את הביצועים בגרסאות ישנות יותר של API. אם האפליקציה שלכם משתמשת ב-Google Play Services, מוסיפים את התלות הזו לקובץ ה-gradle כדי לקבל תמיכה ב-GCMNetworkManager באופן אוטומטי. אם Play Services לא זמין, WorkManager ימשיך לחזור ל-AlarmManager במכשירים ישנים יותר.
גרסה 2.2.0-rc01
30 ביולי 2019
androidx.work:work-*:2.2.0-rc01 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תיקוני באגים
- תוקן באג בהטמעה של AlarmManager שגורם לשירות להיסגר מוקדם מדי, וכתוצאה מכך ל-
RejectedExecutionExceptionבמקרים נדירים. (aosp/1092374) (b/138238197). - הוספנו פתרון עקיף לבעיה
NullPointerExceptionכשמשתמשים בממשקי API שלJobSchedulerבמכשירים מסוימים. (aosp/1091020) (b/138364061), (b/138441699)
גרסה 2.2.0-beta02
19 ביולי 2019
androidx.work:work-*:2.2.0-beta02 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תיקוני באגים
- הוסרה תלות לא מכוונת ב-jacoco שהוצגה ב-
2.2.0-beta01.
גרסה 2.2.0-beta01
17 ביולי 2019
androidx.work:work-*:2.2.0-beta01 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תכונות חדשות
-
androidx.work:work-gcm:2.2.0-beta01הוא ארטיפקט חדש של Maven שתומך בשימוש ב-GCMNetworkManager כמתזמן כש-Google Play Services זמין לרמות API <= 22. זוהי תלות אופציונלית שעוזרת לעיבוד ברקע בצורה מהימנה ויעילה יותר בגרסאות ישנות יותר של API. אם האפליקציה שלכם משתמשת ב-Google Play Services, מוסיפים את התלות הזו לקובץ ה-gradle כדי לקבל תמיכה ב-GCMNetworkManager באופן אוטומטי. אם Play Services לא זמין, WorkManager ימשיך לחזור ל-AlarmManager במכשירים ישנים יותר.
תיקוני באגים
- תיקון ל-
IllegalArgumentExceptionכשעוקבים אחרי מצב הרשת בטאבלטים Nvidia Shield K1. (aosp/1010188)
גרסה 2.1.0
גרסה 2.1.0
11 ביולי 2019
androidx.work:work-*:2.1.0 מופץ. הגרסה הזו זהה לגרסה androidx.work:work-*:2.1.0-rc01.
שינויים חשובים מאז גרסה 2.0.1
-
work-runtime-ktxעכשיו נדרשת Java 8. אם נתקלתם בבעיות, אתם יכולים להוסיף את הקוד הבא ל-build.gradle:kotlinOptions { jvmTarget = "1.8" } - הוספנו הפעלה לפי דרישה של WorkManager, שתיצור WorkManager רק כשמתייחסים אליו. b/127497100 כדי להגדיר את הפרויקט לאתחול לפי דרישה:
- השבתת האתחול האוטומטי.
- מטמיעים את
Configuration.ProviderבאובייקטApplicationהמותאם אישית. - תשנה את כל ההפניות אל
WorkManager.getInstance()ל-WorkManager.getInstance(Context). כחלק מהשינוי הזה, הוצאנו משימוש אתWorkManager.getInstance(). תמיד בטוח יותר להתקשר למספר החדשWorkManager.getInstance(Context), גם אם לא מבצעים הפעלה לפי דרישה.
PeriodicWorkRequests תומכים עכשיו בעיכובים ראשוניים. אפשר להשתמש ב-method setInitialDelayב-PeriodicWorkRequest.Builderכדי להגדיר השהיה ראשונית. b/111404867- נוספה האפשרות להעניק הרשאה לאחד או יותר מ
WorkerFactoryרשומים באמצעותDelegatingWorkerFactory. b/131435993 - נוספה אפשרות להתאים אישית את
Executorשמשמש את WorkManager לכל הרישום הפנימי שלו באמצעותConfiguration.Builder.setTaskExecutor. - הוספנו את האפשרות ליצור מחלקות
Workerו-ListenableWorkerשניתנות לבדיקת יחידות באמצעותTestWorkerBuilderו-TestListenableWorkerBuilderבפריט המידעwork-testing.- שימו לב ש-
work-testingמושך עכשיו את Kotlin כתלות וכולל כמה תוספים של Kotlin כברירת מחדל.
- שימו לב ש-
- נוסף מספר הניסיונות להרצה אל
WorkInfo. b/127290461 - עכשיו אפשר לאחסן ולשלוף בייטים ומערכים של בייטים בסוגים
Data. הפעולה הזו לא משנה את הגודל המקסימלי של אובייקטים מסוגData. - WorkManager תלוי עכשיו ב-
Room 2.1.0, וזה אמור לפתור חלק מהבעיות במסד הנתונים.
גרסה 2.1.0-rc01
27 ביוני 2019
androidx.work:work-*:2.1.0-rc01 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תיקוני באגים
- תוקן באג שגרם לקריסת האפליקציה כשמבצעים משימות עם
JobSchedulerבזמן שגיבוי מתבצע b/135858602.
גרסה 2.1.0-beta02
20 ביוני 2019
androidx.work:work-*:2.1.0-beta02 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תיקוני באגים
-
TestListenableWorkerBuilderמשתמש עכשיו ב-WorkerFactoryהנכון כשיוצרים מופעים שלListenableWorker. b/135275844 - תוקן באג שגרם לסטיות בחלונות ההפעלה של
WorkRequestבגלל סיום התהליך. b/135272196
גרסה 2.1.0-beta01
13 ביוני 2019
androidx.work:work-*:2.1.0-beta01 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תיקוני באגים
- WorkManager תלוי עכשיו ב-
Room 2.1.0, וזה אמור לפתור חלק מהבעיות במסד הנתונים. - הוסרו פעולות קלט/פלט מסוימות של דיסק ההפעלה ב-thread הראשי.
- תוקן מצב פוטנציאלי של קיפאון במעקב אחר אילוצים. b/134361006
- בוטלו משימות לא חוקיות באופן יזום, שמשויכות ל-WorkManager. b/134058261
- הוספנו כמה קריאות הגנתיות לממשקי JobScheduler API למכשירים עם התנהגות חריגה.
גרסה 2.1.0-alpha03
5 ביוני 2019
androidx.work:*:2.1.0-alpha03 מופץ.
תיקוני באגים
- שיפרנו את התיעוד של
PeriodicWorkRequest. -
WorkManagerTestInitHelperמשתמש עכשיו ב-executor הנכון ברקע לבדיקות. - תיקונים לבעיות ב-SQLite כשמבצעים עסקאות גדולות במכשירים מסוימים. (b/130182503)
- התלות של WorkManager עכשיו מפורטת יותר. (b/133169148).
- פתרון עקיף לבאגים ספציפיים ל-OEM בהטמעה של
JobSchedulerכשמתזמנים משימות באמצעות WorkManager. - שיפורים בתזמון מבוסס AlarmManager בנוגע למשך החיים של שירותים שגרמו בעבר לקריסות נדירות. (b/133313734)
גרסה 2.1.0-alpha02
16 במאי 2019
גרסה WorkManager 2.1.0-alpha02 הושקה. הגרסה הזו מכילה כמה ממשקי API חדשים.
שינויים ב-API
PeriodicWorkRequests תומכים עכשיו בעיכובים ראשוניים. אפשר להשתמש ב-method setInitialDelayב-PeriodicWorkRequest.Builderכדי להגדיר השהיה ראשונית. b/111404867נוספה האפשרות להעניק הרשאה לאחד או יותר מ
WorkerFactoryרשומים באמצעותDelegatingWorkerFactory. b/131435993נוספה אפשרות להתאים אישית את
Executorשמשמש את WorkManager לכל הרישום הפנימי שלו באמצעותConfiguration.Builder.setTaskExecutor.שיפור התיעוד בנושא
WorkRequest.keepResultsForAtLeast(b/130638001), אתחול לפי דרישה ו-PeriodicWorkRequest.Builder(b/131711394).
גרסה 2.1.0-alpha01
24 באפריל 2019
גרסה WorkManager 2.1.0-alpha01 הושקה. הגרסה הזו מכילה כמה ממשקי API חדשים. חשוב לשים לב שמהגרסה הזו ואילך, יהיו תכונות חדשות שלא יועברו לגרסה 1.x. מומלץ לעבור לגרסה 2.x.
שינויים ב-API
- הוספנו הפעלה לפי דרישה של WorkManager, שתיצור WorkManager רק כשמתייחסים אליו. b/127497100 כדי להגדיר את הפרויקט לאתחול לפי דרישה:
- השבתת האתחול האוטומטי.
- מטמיעים את
Configuration.ProviderבאובייקטApplicationהמותאם אישית. - תשנה את כל ההפניות אל
WorkManager.getInstance()ל-WorkManager.getInstance(Context). כחלק מהשינוי הזה, הוצאנו משימוש אתWorkManager.getInstance(). תמיד בטוח יותר להתקשר למספר החדשWorkManager.getInstance(Context), גם אם לא מבצעים הפעלה לפי דרישה.
- הוספנו את האפשרות ליצור מחלקות
Workerו-ListenableWorkerשניתנות לבדיקת יחידות באמצעותTestWorkerBuilderו-TestListenableWorkerBuilderבפריט המידעwork-testing.- שימו לב שספריית
work-testingכוללת עכשיו את Kotlin כתלות, אבל היא גם כוללת כמה הרחבות של Kotlin כברירת מחדל.
- שימו לב שספריית
- נוסף מספר הניסיונות להרצה אל
WorkInfo. b/127290461 - עכשיו אפשר לאחסן ולאחזר ב-
Dataסוגים בייטים ומערכים של בייטים. הפעולה הזו לא משנה את הגודל המקסימלי של אובייקטים מסוגData. - הוצא משימוש
CoroutineWorker.coroutineContext. השדה הזה הוקלד באופן שגוי כ-CoroutineDispatcher. כבר לא צריך אותו כי אפשר לעבור ל-coroutineContext הרצוי בגוף של הפונקציה המשהה. - הערות נוספו ל-
RxWorker.createWork()ול-RxWorker.getBackgroundScheduler()עם סוגי ההחזרה@NonNull.
גרסה 2.0.1
גרסה 2.0.1
9 באפריל 2019
גרסה WorkManager 2.0.1 הושקה. הגרסה הזו זהה לגרסה 2.0.1-rc01.
גרסה 2.0.1-rc01
3 באפריל 2019
הגרסה WorkManager 2.0.1-rc01 הופצה. הגרסה הזו מכילה כמה תיקוני באגים. חלק מהשינויים האלה מופיעים גם בגרסה 1.0.1-rc01 של 1.x.
תיקוני באגים
- בדיקות Robolectric פועלות עכשיו בצורה תקינה עם WorkManager. b/122553577
- תוקן קראש במקרה קצה שקשור למעקב אחר אילוצים שלא נוקו בממשקי API שלפני JobScheduler. b/129226383
- תוקנה בעיה ב-
StackOverflowErrorשקשורה לשרשרות ארוכות של עבודות. b/129091233 - עדכנו את התיעוד של
PeriodicWorkRequestכדי לציין שאין תמיכה בשעות גמישות ב-API 23. - תוקנו כמה קישורים שבורים במסמכי התיעוד של Kotlin.
גרסה 2.0.0
גרסה 2.0.0
20 במרץ 2019
הגרסה WorkManager 2.0.0 הושקה. הגרסה הזו זהה לגרסה 2.0.0-rc01 והיא גרסת AndroidX של גרסה 1.0.0 יציבה עם תלות ב-AndroidX. מומלץ לטרגט את הגרסה הזו במקום את גרסאות 1.x מדור קודם. כל הפיתוח הפעיל יתמקד בגרסאות 2.x, וגרסאות 1.x יקבלו תיקוני באגים קריטיים רק למשך זמן מוגבל.
גרסה 2.0.0-rc01
7 במרץ 2019
גרסה WorkManager 2.0.0-rc01 הושקה. הגרסה הזו זהה לגרסה 1.0.0 stable, אבל יש לה תלות ב-AndroidX. אחרי שהגרסה תגיע ל-2.0.0 יציבה, כדאי לכלול את הגרסה הזו, וגרסאות 1.x מדור קודם יקבלו רק תיקוני באגים קריטיים. כל הפיתוח הפעיל יתבצע בגרסה 2.x.
Pre-AndroidX Dependencies
מסמכי עזר: Java
מגניב
dependencies { def work_version = "1.0.1" // (Java only) implementation "android.arch.work:work-runtime:$work_version" // Kotlin + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "android.arch.work:work-rxjava2:$work_version" // optional - Test helpers androidTestImplementation "android.arch.work:work-testing:$work_version" }
Kotlin
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
גרסה 1.0.1
גרסה 1.0.1
9 באפריל 2019
גרסה WorkManager 1.0.1 הושקה. הגרסה הזו זהה לגרסה 1.0.1-rc01.
חשוב לציין שאנחנו ממליצים מאוד למשתמשים לעדכן ל-WorkManager 2.x, כי יהיו מעט מאוד עדכונים לענף 1.x בהמשך. בנוסף, לא יפורסמו ממשקי API חדשים לספרייה בגרסה 1.x.
גרסה 1.0.1-rc01
2 באפריל 2019
הגרסה WorkManager 1.0.1-rc01 הופצה. הגרסה הזו מכילה כמה תיקוני באגים.
תיקוני באגים
- בדיקות Robolectric פועלות עכשיו כמו שצריך עם WorkManager. b/122553577
- תוקן קראש במקרה קצה שקשור למעקב אחר אילוצים שלא נוקו בממשקי API שלפני JobScheduler. b/129226383
- תוקנה בעיה ב-
StackOverflowErrorשקשורה לשרשרות ארוכות של עבודות. b/129091233
גרסה 1.0.0
גרסה 1.0.0
5 במרץ 2019
זוהי גרסה יציבה של WorkManager 1.0.0. הגרסה הזו של WorkManager זהה לגרסה 1.0.0-rc02.
גרסה 1.0.0-rc02
21 בפברואר 2019
זוהי הגרסה השנייה המועמדת להפצה של WorkManager 1.0.0. הגרסה הזו כוללת שני תיקוני באגים.
תיקוני באגים
מעכשיו,
Workers מתוזמנים בצורה נכונה אחרי קריסת האפליקציה. b/124546316
Workers שיוצריםExceptionלא מסומנים מסומנים עכשיו בצורה נכונה כ-FAILEDולא גורמים יותר לקריסת תהליך האפליקציה.
גרסה 1.0.0-rc01
14 בפברואר 2019
זוהי גרסה מועמדת להפצה של גרסה יציבה 1.0.0 של WorkManager. הגרסה הזו כוללת תיקון באג אחד.
תיקוני באגים
- ההטמעה שמבוססת על AlarmManager מכבדת עכשיו בצורה נכונה חלונות של
flexעבור PeriodicWorkRequests. b/124274584
גרסה 1.0.0-beta05
6 בפברואר 2019
הגרסה הזו כוללת כמה תיקוני באגים.
תיקוני באגים
- תוקנה בעיה שבה נעשה שימוש ב-
JobScheduler.getPendingJob(...)ב-API 23. b/123893059 - תוקנה בעיה
NullPointerExceptionבמכשירים עם Android 5.1 (רמת API 22) או גרסאות קודמות. b/123835104
גרסה 1.0.0-beta04
4 בפברואר 2019
הגרסה הזו כוללת כמה תיקוני באגים.
תיקוני באגים
- שיפור בתזמון של PeriodicWork עבור ההטמעה שמבוססת על AlarmManager.
- תוקנה בעיה שבה WorkManager לא הצליח לעקוב אחרי אילוצים בצורה נכונה כשנעשה שימוש בהטמעה שמבוססת על AlarmManager. b/123379508
- תוקן מקרה שבו WorkManager לא ניסה לבצע מחדש עבודה בהשבתת תהליך כשנעשה שימוש בהטמעה שמבוססת על AlarmManager. b/123329850
- תוקן מקרה שגרם ל-WorkManager לדלוף Wakelocks כשמשתמשים בהטמעה שמבוססת על AlarmManager.
גרסה 1.0.0-beta03
25 בינואר 2019
הגרסה הזו כוללת כמה תיקוני באגים.
תיקוני באגים
- הכנסנו רגרסיה
1.0.0-beta02שגרמה לכך שפעולות לא בוצעו כמו שצריך במצבים מסוימים. b/123211993 - תוקנה בעיה שבה העבודה לא בוצעה בזמן ההשהיה שנקבע. b/122881597
- תוקן באג
ConcurrentModificationExceptionבמכשירים עם Android 5.1 (API או) ומטה. התיקון הזה הוא המשך לתיקון שבוצע בגרסה1.0.0-beta02. b/121345393 - נוסף
exported=falseלחלק מהרכיבים במניפסט שלא הייתה להם ההערה הזו. - בתיעוד ברמת החבילה יש מידע על האינטראקציה של WorkManager עם מערכת ההפעלה.
גרסה 1.0.0-beta02
15 בינואר 2019
הגרסה הזו כוללת כמה תיקוני באגים.
תיקוני באגים
- תוקן מקרה קצה שבו עבודה תקופתית יכלה לפעול יותר מפעם אחת בכל מרווח במכשירים עם Android 6.0 (רמת API 23). b/121998363
- תוקנה בעיה
ConcurrentModificationExceptionבמכשירים עם Android 5.1 (רמת API 22) ומטה. b/121345393 - תוקן באג שגרם לביצוע שגוי של עבודה כשלא מתקיימות מגבלות במכשירים עם Android 5.1 (רמת API 22) או גרסאות קודמות. b/122578012
- שיפרנו את הטיפול בהשלמת עבודה כדי שיהיה מהיר יותר במקרים מסוימים. b/122358129
- נוסף שינוי לטיפול בתנאי מירוץ פוטנציאליים בין כמה מופעים של
LiveDataשבהם נעשה שימוש ב-WorkManager. - הועבר לשימוש בתלות
Room1.1.1במקום1.1.1-rc01. הגרסאות האלה זהות. b/122578011
גרסה 1.0.0-beta01
19 בדצמבר 2018
הגרסה הזו לא כוללת שינויים ב-API. מעכשיו, צפוי ש-WorkManager יישאר יציב ב-API עד לגרסה הבאה, אלא אם תהיה בעיה קריטית. הגרסה הזו כוללת כמה תיקוני באגים.
תיקוני באגים
- ילדים שבוטלו בעבר של עבודת הורה שהושלמה בהצלחה לא יפעלו יותר. b/120811767
- הפעלה תקינה של מחלקות רישום ביומן (מוצג בעיקר במהלך בדיקות).
גרסה 1.0.0-alpha13
12 בדצמבר 2018
הגרסה הזו כוללת שינוי קל ב-API שיעזור לחלק מהמשתמשים ב-Kotlin.
שינויים ב-API
- הכיתה
androidx.work.Resultהועברה להיות כיתה פנימית שלListenableWorker. כך נמנעות התנגשויות של רפקטורינג עם המחלקהResultברמה העליונה של Kotlin. זהו שינוי משמעותי ב-API. b/120564418
שינויים ב-API שעלולים לגרום לבעיות
- הכיתה
androidx.work.Resultהועברה להיות כיתה פנימית שלListenableWorker.
גרסה 1.0.0-alpha12
5 בדצמבר 2018
הגרסה הזו כוללת כמה שינויים בממשקי ה-API שעלולים לגרום לכשל. מידע נוסף זמין בקטע שינויים בממשקי ה-API שעלולים לגרום לכשל שבהמשך. סביר להניח שהגרסה הזו תפורסם כגרסת הבטא הראשונה שלנו. alpha12 כולל גם עדכונים נרחבים בתיעוד.
שינויים ב-API
- ארטיפקט חדש,
work-rxjava2, מציג אתRxWorker. זהוListenableWorkerשמצפה ל-Single<Payload>. - הוסר התמיכה ב-Firebase JobDispatcher בגלל ההוצאה שלו משימוש. המשמעות היא שלא נעדכן יותר את ארטיפקט
work-firebaseכשהמוצר יעבור לגרסת בטא. אנחנו נבדוק אפשרות להוסיף חלופה בעתיד. - שילוב של
PayloadעםResult. Resultהוא עכשיו 'סיווג אטום' עם שלוש הטמעות קונקרטיות, שאפשר לקבל דרךResult.success()(אוResult.success(Data)),Result.failure()(אוResult.failure(Data)) ו-Result.retry(). התוצאה שלListenableFutureעכשיו היאResultבמקוםPayload. ל-Workerאין שיטות getter ו-setter לפלטData. זהו שינוי שעלול לגרום לבעיות. - נוספו
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)ו-Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)ווריאציות כדי לשפר את התמיכה בכתובות URI של תוכן עם הפעלה איטית. b/119919774 - נוספה וריאציה של
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration). השיטה הזו דורשת API 26. - נוספו methods מסוג
Operation.await()ו-ListenableFuture.await()לתוספים של Kotlin. - השם של
Operation.getException()שונה לOperation.getThrowable(). זהו שינוי שעלול לגרום לבעיות. - המחלקות
ContentUriTriggersוה-methods שמפנות אליהן לא זמינות יותר לשימוש ציבורי. זהו שינוי שעלול לגרום לבעיות. - הסרנו את שאר ה-methods של varargs ב-
WorkManager, ב-WorkContinuationוב-OneTimeWorkRequestכדי לייעל את ה-API. כדי לפתור בעיות ב-build, אפשר להוסיף אתArrays.asList(...)ל-varargs הקיימים. אנחנו עדיין כוללים גרסאות של כל שיטה עם ארגומנט יחיד. זהו שינוי שעלול לגרום לבעיות. - הוסרו
WorkContinuation.combine(OneTimeWorkRequest, *)וריאציות. הם הציגו API מבלבל, והשיטות הקיימותcombineמובנות יותר. זהו שינוי שעלול לגרום לבעיות.
תיקוני באגים
- הטמעות בגרסאות קודמות ל-Marshmallow אמינות יותר עכשיו בשחזור ממצב של השבתת תהליך של משימה שכבר פועלת.
-
LiveDataשנצפה דרךobserveForeverמתבצע מעקב דרך WorkManager. זוהי העברה לאחור של תיקון בספריית Room. b/74477406 -
Data.Builder.build()מחזירה עכשיו חריגה אם האובייקט שעבר סריאליזציה חורג מהגודל המקסימלי שלו. בעבר, זה היה קורה רק בשרשור ברקע, ולא הייתה אפשרות לטפל בזה כמו שצריך. - הוספנו הבחנה בין עבודה שהופסקה לבין עבודה שבוטלה.
getWorkInfoById()יחזירWorkInfoעםCANCELLEDStateבמהלךListenableWorker.onStopped(). - התייחסות ל
nullResults כאל כשלים ב-ListenableWorker. b/120362353 - תיקון ספקולטיבי ל-Shield Tablets עם API 24 שלפעמים הציגו
IllegalArgumentException. b/119484416
שינויים ב-API שעלולים לגרום לבעיות
- התמיכה ב-Firebase JobDispatcher הוסרה בגלל שהוצאה משימוש צפויה. המשמעות היא שלא נעדכן יותר את ארטיפקט
work-firebaseכשהמוצר יעבור לגרסת בטא. אנחנו נבדוק אפשרות להוסיף חלופה בעתיד. - שילוב של
PayloadעםResult. Resultהוא עכשיו 'סיווג אטום' עם שלוש הטמעות קונקרטיות, שאפשר לקבל דרךResult.success()(אוResult.success(Data)),Result.failure()(אוResult.failure(Data)) ו-Result.retry(). התוצאה שלListenableFutureעכשיו היאResultבמקוםPayload. ל-Workerאין getter ו-setter methods לפלטData. - נוספו methods מסוג
Operation.await()ו-ListenableFuture.await()לתוספים של Kotlin. - השם של
Operation.getException()שונה לOperation.getThrowable(). - המחלקות
ContentUriTriggersוה-methods שמפנות אליהן לא זמינות יותר לשימוש ציבורי. - הסרנו את שאר ה-methods של varargs ב-
WorkManager, ב-WorkContinuationוב-OneTimeWorkRequestכדי לייעל את ה-API. כדי לפתור בעיות ב-build, אפשר להוסיף אתArrays.asList(...)ל-varargs הקיימים. אנחנו עדיין כוללים גרסאות של כל שיטה עם ארגומנט יחיד. - הוסרו
WorkContinuation.combine(OneTimeWorkRequest, *)וריאציות. הם הציגו API מבלבל, והשיטות הקיימותcombineמובנות יותר.
גרסה 1.0.0-alpha11
8 בנובמבר 2018
הגרסה הזו כוללת הרבה שינויים שיהפכו ל-API יציב ב-beta.
בגרסה הזו יש שינויים ב-API שעלולים לגרום לכשלים. מידע נוסף זמין בקטע שינויים ב-API שעלולים לגרום לכשלים שבהמשך.
שינויים ב-API
work-runtime-ktxמציגCoroutineWorkerחדש.- השם של
WorkStatusהשתנה לשםWorkInfo. כל הגרסאות התואמות של שיטתgetStatusקיבלו שם חדש של הגרסאות התואמות שלgetWorkInfo. זהו שינוי שעלול לגרום לבעיות. - הפונקציה
ListenableWorker.onStopped()לא מקבלת יותר ארגומנט בוליאני שמייצג אםWorkRequestבוטל.WorkManagerכבר לא מבחין בין שני המצבים האלה. זהו שינוי שעלול לגרום לבעיות. - השם של חבילת
androidx.work.testהשתנה לחבילתandroidx.work.testing. זהו שינוי שעלול לגרום לבעיות. - הפונקציות להגדרת מאפיינים ב-
Constraintsכבר לא חלק מה-API הציבורי. זהו שינוי שעלול לגרום לבעיות. - הפונקציות
WorkerParameters.getTriggeredContentUris()ו-WorkerParameters.getTriggeredContentAuthorities()החזירו בעבר מערכים. עכשיו ה-methods האלה מחזירות אוספים. זהו שינוי שעלול לגרום לבעיות. - השם של
ListenableWorker.onStartWork()השתנה לListenableWorker.startWork(). זהו שינוי שעלול לגרום לבעיות. - הבונה של
WorkStatusכבר לא חלק מה-API הציבורי. זהו שינוי שעלול לגרום לבעיות. - השמות של
Configuration.getMaxJobSchedulerID()ו-Configuration.getMinJobSchedulerID()משתנים ל-Configuration.getMinJobSchedulerId()ו-Configuration.getMaxJobSchedulerId()בהתאמה. זהו שינוי שעלול לגרום לבעיות. - הוספנו הרבה הערות
@NonNullל-API הציבורי כדי לשפר את השימושיות שלו. - מוסיפים
WorkManager.enqueueUniqueWork()API כדי להוסיףOneTimeWorkRequestייחודיים לתור בלי ליצורWorkContinuation. - כל הווריאציות של שיטות
enqueueו-cancelב-WorkManagerמחזירות עכשיו סוג חדש שלOperation. זהו שינוי שעלול לגרום לבעיות. - כל הגרסאות של
enqueueלא מקבלות יותר varargs עבורWorkRequests. זהו שינוי שעלול לגרום לבעיות. במקום זאת, אפשר להשתמש באוספים. אפשר להשתמש ב-Arrays.asList()כדי לשנות קוד קיים. עשינו את זה כדי לצמצם את שטח ה-API ואת מספר ה-methods. - ניסיון לבצע
initializeWorkManagerיותר מפעם אחת בכל תהליך יגרום עכשיו לIllegalStateException. זהו שינוי שעלול לגרום לבעיות.
תיקוני באגים
-
WorkRequest.Builders בפריט המידעwork-runtime-ktxמשתמשים עכשיו ב-ListenableWorkers. תיקונים b/117666259 - מוודאים שמועד ההפעלה הבא של
PeriodicWorkהוא בעתיד. תיקונים b/118204399 - הסרת קלט/פלט פוטנציאליים בדיסק כשמשתמשים ב-WorkManager בהפעלת האפליקציה. תיקונים b/117796731
- תיקון מרוץ תהליכים ב-
WorkConstraintsTracker. תיקון android-workmanager/issues/56
שינויים ב-API שעלולים לגרום לבעיות
- השם של
WorkStatusהשתנה לשםWorkInfo. כל הגרסאות התואמות של שיטתgetStatusקיבלו שם חדש של הגרסאות התואמות שלgetWorkInfo. - הפונקציה
ListenableWorker.onStopped()לא מקבלת יותר ארגומנט בוליאני שמייצג אםWorkRequestבוטל.WorkManagerכבר לא מבחין בין שני המצבים האלה. - השם של חבילת
androidx.work.testהשתנה לחבילתandroidx.work.testing. - הפונקציות להגדרת מאפיינים ב-
Constraintsכבר לא חלק מה-API הציבורי. - הפונקציות
WorkerParameters.getTriggeredContentUris()ו-WorkerParameters.getTriggeredContentAuthorities()החזירו בעבר מערכים. עכשיו ה-methods האלה מחזירות אוספים. - השם של
ListenableWorker.onStartWork()השתנה לListenableWorker.startWork(). - הבונה של
WorkStatusכבר לא חלק מה-API הציבורי. - השמות של
Configuration.getMaxJobSchedulerID()ו-Configuration.getMinJobSchedulerID()משתנים ל-Configuration.getMinJobSchedulerId()ו-Configuration.getMaxJobSchedulerId()בהתאמה. - כל הווריאציות של שיטות
enqueueו-cancelב-WorkManagerמחזירות עכשיו סוג חדש שלOperation. - כל הגרסאות של
enqueueלא מקבלות יותר varargs עבורWorkRequests. - ניסיון לבצע
initializeWorkManagerיותר מפעם אחת בכל תהליך יגרום עכשיו לIllegalStateException.
גרסה 1.0.0-alpha10
11 באוקטובר 2018
הגרסה הזו תומכת בעבודה אסינכרונית שנשלטת על ידי המפתחים. בגרסה הזו יש שינויים ב-API שעלולים לגרום לכשלים. מידע נוסף זמין בקטע שינויים ב-API שעלולים לגרום לכשלים שבהמשך.
אנחנו צופים ש-WorkManager ייכנס לשלבים האחרונים של תקופת האלפא שלו. אנחנו מצפים שה-API יהיה יציב בגרסת הבטא, לכן נשמח לקבל ממך משוב במעקב הבעיות שלנו.
שינויים ב-API
- הוסרו כל ה-methods והמחלקה
deprecatedשהוצאו משימוש בעבר, במיוחד ה-constructor שלWorkerשמוגדר כברירת מחדל. זהו שינוי ב-API שעלול לגרום לכשל. - השם
NonBlockingWorkerשונה ל-ListenableWorker, ועכשיו זו כיתה ציבורית לא מוסתרת ומוכנה לשימוש.-
ListenableWorkerמספק גישה לשיטה מופשטת אחת,ListenableFuture<Payload> onStartWork(), שמופעלת בשרשור הראשי. אתם צריכים להתחיל ולעבד את העבודה באופן אסינכרוני. בסיום, צריך לעדכן אתListenableFutureבהתאם. הטמעות לדוגמה שלListenableFutures מופיעות בחבילהFuturesב-alpha02(ראו בהמשך בקטעWorkManager). -
Workerמרחיב אתListenableWorkerועדיין פועל כמו קודם, עם שיטתResult doWork()מופשטת. - העברנו כמה שיטות וחברים מ
WorkerאלListenableWorker. - בקרוב נספק יישומי הפניה ל-
ListenableWorkerשמשתמשים ב-Kotlin coroutines (אחרי שגרסאות היציבות יושקו) וב-RxJava2.
-
- הממשק
WorkerFactoryוההטמעה הקונקרטיתDefaultWorkerFactoryמוזגו למחלקה מופשטת שנקראתWorkerFactory. ההטמעה מוודאת שההתנהגות שמוגדרת כברירת מחדל על סמך רפלקציה נקראת כניסיון אחרון לכל מופעיWorkerFactoryשנוצרו על ידי המשתמש. זהו שינוי שעלול לגרום לבעיות. - הוסרו
WorkManager.synchronous()ו-WorkContinuation.synchronous()וכל ה-methods שקשורים אליהם. נוסףListenableFuture<Void>כסוג ההחזרה של הרבה שיטות ב-API. זהו שינוי משמעותי ב-API.- מעכשיו אפשר לקבל ולצפות באופן סינכרוני באמצעות
ListenableFutures. לדוגמה, הפקודהWorkManager.enqueue()החזירה בעבר את הערךvoid, אבל עכשיו היא מחזירה את הערךListenableFuture<Void>. אחרי שהפעולה תסתיים, תוכלו להתקשר אלListenableFuture.addListener(Runnable, Executor)או אלListenableFuture.get()כדי להריץ את הקוד. - שימו לב שהתגים
ListenableFutureהאלה לא מציינים אם הפעולה הצליחה או נכשלה, אלא רק שהיא הסתיימה. עדיין צריך לשרשר שיטות של WorkManager כדי לקבל את המידע הזה. - אנחנו מתעלמים מקריאות
cancel()באובייקטים האלה, כי הן מבלבלות וקשה להבין אותן (האם מבטלים את הפעולה או את העבודה שנובעת ממנה?). ההסכם הזה הוא חלק מהחוזה שלFuture. - כדי לשמור על שוויון עם ה-methods הסינכרוניות של
getStatus*, הוספנו וריאציות שלListenableFutureושינינו את השם של ה-methods הקיימות שהחזירוLiveDataכך שיכלול במפורש את המחרוזת LiveData (לדוגמה,getStatusesByIdLiveData(UUID)). זהו שינוי משמעותי ב-API.
- מעכשיו אפשר לקבל ולצפות באופן סינכרוני באמצעות
תיקוני באגים
- תוקנה הבעיה המוכרת מגרסה alpha09 שקשורה לקבצים כפולים של
androidx-annotations.pro. כדי להסיר את הפתרון העקיף מהערות הגרסה הקודמות, צריך למחוק אתexclude 'META-INF/proguard/androidx-annotations.pro'מקובץ ה-Gradle. - נוספו הגדרות proguard כדי לשמור על בנאי חדש של
Worker. b/116296569 - תוקנה בעיה פוטנציאלית
NullPointerExceptionבמרוץ תהליכים שבו העבודהREPLACEהייתה. b/116253486 ו-b/116677275 - הפרמטר
WorkContinuation.combine()מקבל עכשיוWorkContinuationאחד או יותר במקום שניים או יותר. b/117266752
שינויים ב-API שעלולים לגרום לבעיות
- הוסרו כל ה-methods והמחלקה
deprecatedשהוצאו משימוש בעבר, במיוחד ה-constructor שלWorkerשמוגדר כברירת מחדל. - הממשק
WorkerFactoryוההטמעה הקונקרטיתDefaultWorkerFactoryמוזגו למחלקה מופשטת שנקראתWorkerFactory. - הוסרו
WorkManager.synchronous()ו-WorkContinuation.synchronous(). - ה-methods של
WorkManager.getStatus*()מחזירות עכשיוListenableFutures.WorkManager.getStatus*LiveData()החזרהLiveData.
גרסה 1.0.0-alpha09
19 בספטמבר 2018
בעיה ידועה
אם נתקלתם בבעיה הבאה: "נמצא יותר מקובץ אחד עם נתיב בלתי תלוי במערכת ההפעלה 'META-INF/proguard/androidx-annotations.pro'", תוכלו להוסיף את הקוד הבא לקובץ gradle כפתרון זמני עד שנפתור את הבעיה בגרסה alpha10:
מגניב
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
תיקוני באגים
- נוסף תיקון נוסף שנדרש לשגיאה '100 משימות'. b/115560696
- הוספנו כמה תיקונים לשגיאות של אילוצי מפתח זר בגלל תנאי מירוץ. b/114705286
- השיחות של
ConstraintTrackingWorker.onStopped(boolean)הועברו ל-Worker. b/114125093 - החלת עיכוב מינימלי נכון בנסיגה (backoff) ב-Firebase JobDispatcher. b/113304626
- שיפורים בהבטחות לגבי שרשורים פנימיים בספרייה.
- תוקנה בעיה פוטנציאלית שקשורה להסרת כפילויות של
LiveDataבאופן פנימי.
שינויים ב-API
- עכשיו אתם יכולים ליצור מופעים משלכם של
Workerבזמן ריצה על ידי ציוןWorkerFactoryכחלק מ-WorkManager.Configuration. מפעל ברירת המחדל הואDefaultWorkerFactory, שתואם להתנהגות של גרסאות קודמות של WorkManager.- הקונסטרוקטורים שמוגדרים כברירת מחדל עבור
Workerו-NonBlockingWorkerמסומנים עכשיו כפריטים שיצאו משימוש. צריך להשתמש בבונה החדש (Worker(Context, WorkerParameters)) ולקרוא ל-super(Context, WorkerParameters). בגרסאות עתידיות של WorkManager, הבונה שמוגדר כברירת מחדל יוסר.
- הקונסטרוקטורים שמוגדרים כברירת מחדל עבור
- התחלנו להשתמש בפריט החדש
ListenableFutureבאופן פנימי (ללא תלות ב-Guava). בגרסאות הקרובות של ה-API, נוסיף את ListenableFutures. השינוי הזה יתמוך בהסרת ההסתרה שלNonBlockingWorkerבהמשך. - הוספנו את האפשרות להפעיל עבודה מתוזמנת ב-
TestDriverבאמצעותTestDriver.setInitialDelayMet(UUID)ו-TestDriver.setPeriodDelayMet(UUID). b/113360060
שינויים שעלולים לגרום לכשלים
- הקונסטרוקטורים
Workerו-NonBlockingWorkerשמוגדרים כברירת מחדל הוצאו משימוש. מומלץ לעבור לקונסטרוקטור החדש בהקדם האפשרי. בגרסאות עתידיות, ה-constructor שמוגדר כברירת מחדל יוסר.
גרסה 1.0.0-alpha08
27 באוגוסט 2018
תיקוני באגים
- רכיבי WorkManager מסומנים באופן מפורש כרכיבים שלא מודעים להפעלה ישירה, כדי שלא יופעלו במהלך הפעלה ישירה. בעתיד נספק גרסה של WorkManager שתתמוך באתחול ישיר. b/112665532
- תוקנה בעיה שבה עבודה שבוצעה מחדש לא פעלה. b/112604021
- תוקנה בעיה שגרמה לכך שעבודות תקופתיות לא בוצעו שוב ושוב (קשור לבעיה שלמעלה). b/112859683
- מדיניות ההשהיה מכובדת כשתהליך האפליקציה כבר פועל.
- תוקנו הודעות החריגה ב-
Dataכדי לציין שהמגבלה היא 10KB. - הערך המקסימלי של
Configuration.setMaxSchedulerLimit(int)הונמך ל-50 כדי להתחשב בחלק מההשהיה בסיום העיבוד שלJobScheduler. b/112817355
גרסה 1.0.0-alpha07
16 באוגוסט 2018
תיקוני באגים
- תוקנה שאילתת SQL פוטנציאלית עם מגבלות שליליות שיכולה להחזיר מספר בלתי מוגבל של תוצאות.
- עכשיו, כשעבודה מסיימת את ההרצה שלה, כל העותקים שממתינים של העבודה הזו מבוטלים בצורה נכונה במתזמנים אחרים. הדבר הוביל לחריגה מהמגבלה של
JobSchedulerמשימות. b/111569265 - תוקנה בעיה מסוג
ConcurrentModificationExceptionב-ConstraintTracker. b/112272753 - השתנו הערות לגבי סוג ההחזרה של
Data.getBooleanArray(String)ושלData.getIntArray(String)ל-@Nullableבמקום ל-@NonNull. b/112275229
שינויים ב-API
-
Workerמרחיב עכשיו מחלקה חדשה,NonBlockingWorker. השינוי הזה לא משפיע על השימוש הנוכחי. בעתיד,NonBlockingWorkerיהפוך לישות נתמכת באופן מלא לפתרונות מותאמים אישית של שרשור. - השתנו הערות לגבי סוג ההחזרה של
Data.getBooleanArray(String)ושלData.getIntArray(String)ל-@Nullableבמקום ל-@NonNull. b/112275229 - Kotlin extensions: הוצא משימוש
Map.toWorkData()והוסףworkDataOf(vararg Pair<String, Any?>)ברמה העליונה כדי להיות עקבי יותר עם ממשקי API קיימים.
גרסה 1.0.0-alpha06
1 באוגוסט 2018
תיקוני באגים
- מניעת נעילת מסד נתונים בתזמון עבודה. b/111801342
- תוקן באג שגרם לכך שהאפליקציה
PeriodicWorkלא פעלה לפי לוח הזמנים כשהמכשיר היה במצב שינה. b/111469837 - תוקנה בעיה של מרוץ תהליכים במעקב אחר אילוצים שגרמה לקריסה של
WorkManager. googlecodelabs/android-workmanager/issues/56 - כשמשתמשים ב-
WorkRequest.Builder#build(), צריך ליצורWorkRequestייחודיים. b/111408337 - מומלץ להפעיל את השימוש ב-
RescheduleReceiverרק אם ישWorkRequestשזקוקים לו. b/111765853
גרסה 1.0.0-alpha05
24 ביולי 2018
שינויים ב-API
- הערת הדרך של
WorkManager.getInstance()היא עכשיו@NonNullבמקום@Nullable. במקום זאת, אם הסינגלטון לא מאותחל בצורה תקינה במקרים של אתחול ידני, ה-method תזרוקIllegalStateException. זהו שינוי ב-API שגורם לבעיות תאימות. - נוסף API חדש,
Configuration.Builder.setMinimumLoggingLevel(int), שמאפשר לשלוט ברמת הפירוט של WorkManager. כברירת מחדל, WorkManager מתעד נתונים ברמהLog.INFOומעלה. - השתנה החתימה של
Data.getString()כך שהיא לא מקבלת יותר ערך ברירת מחדל (היאnullבאופן מרומז). זהו שינוי משמעותי ב-API. - סימנו כמה שיטות שנדרשות לשימוש פנימי בלבד בסימן
@hide. זה כולל את ה-constructorConstraints,Data.toByteArray()ו-Data.fromByteArray(byte[]). זהו שינוי משמעותי ב-API.
תיקוני באגים
- WorkManager לא מריץ יותר עבודות במהלך מקרים ידועים של גיבוי אוטומטי. יכול להיות שהדבר גרם לקריסה. b/110564377
- תוקנה בעיה שגרמה לתזמון כפול של
PeriodicWorkRequestכשמשתמשים ב-JobScheduler. b/110798652 - תוקנה בעיה שבה פקודות
PeriodicWorkRequestלא מופעלות בצורה תקינה אחרי שהמכשיר נכנס למצב שינה. b/111469837 - תוקנה בעיה שקשורה לעיכובים ראשוניים בשימוש ב-Firebase JobDispatcher. b/111141023
- תוקנו כמה תנאי מירוץ פוטנציאליים ובעיות תזמון.
- פנו מקום בקבצים
BroadcastReceiverשכבר לא היו נחוצים. - שיפור הביצועים של תזמון מחדש כשמפעילים מחדש אפליקציות אחרי שהן נסגרו בכוח.
- אפשר להפעיל את
TestScheduler.setAllConstraintsMet(UUID)לפני או אחרי הוספתWorkRequestלתור. b/111238024
שינויים שעלולים לגרום לכשלים
- הערת הדרך של
WorkManager.getInstance()היא עכשיו@NonNullבמקום@Nullable. - השתנה החתימה של
Data.getString()כך שהיא לא מקבלת יותר ערך ברירת מחדל (היאnullבאופן מרומז). - סימנו כמה שיטות שנדרשות לשימוש פנימי בלבד בסימן
@hide. זה כולל את ה-constructorConstraints,Data.toByteArray()ו-Data.fromByteArray(byte[]).
גרסה 1.0.0-alpha04
26 ביוני 2018
תיקוני באגים
- עכשיו מתזמנים מחדש את
PeriodicWorkRequests בצורה נכונה כשמשתמשים בהטמעה שמבוססת עלAlarmManager. - תוקנה בעיה פוטנציאלית של ANR כשמתזמנים מחדש את כל העובדים אחרי עצירה בכוח או הפעלה מחדש. b/110507716
- נוספו הערות לגבי אפשרות לערך null לממשקי API שונים של WorkManager. b/110344065
- רישום ביומן של חריגות לא מטופלות שמתרחשות במהלך ההרצה של Worker. b/109900862
- העברות הרסניות של מסדי נתונים מותרות במקרה שמחליטים לחזור לגרסה קודמת של WorkManager. b/74633270
- תוקנה קריסה בהעברה שקרתה אם נוצרו תגים משתמעים כפולים. זו בעיה נדירה מאוד שמתרחשת רק אם השתמשתם בעצמכם באותו פורמט של תג מרומז.
גרסה 1.0.0-alpha03
19 ביוני 2018
תיקוני באגים
תוקן מרוץ תהליכים בהטמעה שמבוססת על
AlarmManager. b/80346526.תוקנה בעיה שגרמה לשכפול משימות כשמשתמשים ב-
JobSchedulerאחרי הפעלה מחדש של המכשיר.משימות עם טריגרים של מזהי URI של תוכן נשמרות עכשיו גם אחרי הפעלה מחדש. b/80234744
עדכונים במסמכי התיעוד. b/109827628, b/109758949, b/80230748
תוקנה קריסה שהתרחשה כשמכניסים מחדש לרשימת ההמתנה
WorkRequest. b/109572353.תוקנו אזהרות של מהדר Kotlin כשמשתמשים בתלות
work-runtime-ktx.WorkManager משתמש עכשיו בגרסה
Roomשל1.1.1-rc1.
שינויים ב-API
- נוספה הפונקציה
getStatusesSync(), הגרסה הסינכרונית שלWorkContinuation.getStatuses(). -
Workerיכול להבחין בין ביטול שהמשתמש יזם לבין עצירה זמנית שהמערכת הפעלה ביקשה. הפונקציהWorker.isStopped()מחזירה את הערךtrueאם נשלחה בקשה להפסקת הפעולה מכל סוג שהוא. Worker.isCancelled()returnstruewhen the work has been explicitly cancelled. 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)מאפשר להוסיף לתורPeriodicWorkRequests ייחודיים. b/79600647 -
WorkManager.cancelAllWork()מבטל את כל המינויים ל-Worker. ספריות שתלויות ב-WorkManagerיכולות לשלוח שאילתה כדי לדעת מתי בוצעה הקריאה האחרונה לשיטה הזו באמצעותWorkManager.getLastCancelAllTimeMillis(), כדי לבצע ניקוי נוסף של המצב הפנימי. - נוספה האפשרות
WorkManager.pruneWork()להסרת משימות שהושלמו ממסד הנתונים הפנימי. b/79950952, b/109710758
שינויים בהתנהגות
- נוסף תג מרומז לכל
WorkRequest, שהוא שם הסיווג המלא שלWorker. האפשרות הזו מאפשרת להסירWorkRequestבליtagאו כשה-idלא זמין. b/109572351
שינויים שעלולים לגרום לכשלים
- השם של
Worker.WorkerResultשונה לWorker.Result. -
Worker.onStoppedכולל עכשיו פרמטר נוסףisCancelledשמוגדר לערךtrueכשבוטלה באופן מפורשWorker.
גרסה 1.0.0-alpha02
24 במאי 2018
תיקוני באגים
- תוקן
NullPointerExceptionב-State.isFinished(). b/79550068 - תוקנה בעיה שגרמה לתזמון מחדש של
Workerב-Application.onCreate(). b/79660657 - תוקנה בעיה שבה אפשר היה לתזמן יותר עבודה מהמותר במערכת ההפעלה. b/79497378
- העברנו את ניקוי הנעילות של השהיית המכשיר שמשויכות ל-
Workers לשרשור ברקע. - ההטמעה של
AlarmManagerמנקה עכשיו את הנתונים בצורה נכונה כשכל העבודה שממתינה מסתיימת. - תוקנו שאילתות SQL לניקוי שהשפיעו על לוקאלים שאינם באנגלית. b/80065360
- הוספנו תמיכה ב-
floatב-Data. b/79443878 - הפונקציה
Data.Builder.putAll()מחזירה עכשיו מופע שלBuilder. b/79699162 - עוד תיקונים ב-javadoc ובמאמרי העזרה. b/79691663
שינויים ב-API
-
Workers יכולים להגיב כשמפסיקים אותם. אפשר להשתמש ב-Worker.isStopped()כדי לבדוק אםWorkerהופסק. אפשר להשתמש ב-Worker.onStopped()כדי לבצע פעולות ניקוי קלות. -
Worker.getTags()API מחזירSetשל תגים שמשויכים ל-Worker. - הוספנו
javax.time.Durationעומסים יתרים (overloads) ל-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.