WorkManager

בעזרת WorkManager API קל לתזמן משימות אסינכרוניות שניתנות לדחייה ושחייבות לפעול בצורה מהימנה. ממשקי ה-API האלה מאפשרים ליצור משימה ולהעביר אותה ל-WorkManager כדי להפעיל אותה כשמתקיימים אילוצי העבודה.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסת אלפא
‫25 במרץ 2026 2.11.2 - - -

הצהרה על יחסי תלות

כדי להוסיף תלות ב-WorkManager, צריך להוסיף את מאגר Google Maven לפרויקט:

אתם יכולים להוסיף את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:

מגניב

dependencies {
    def work_version = "2.11.2"

    // (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.11.2"

    // (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.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 בבונה התצורות של 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 אל WorkManager TestDriver. (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 ב-Configuration builder של WorkManager נוסף כדי לאפשר הגדרה של משך הזמן שבו סשן של RemoteWorkManager פעיל מהשימוש האחרון בו. (Ib23c8)
  • הוספת API ניסיוני ב-WorkRequest.Builder כדי להחיל השהיה כשעבודה מופסקת על ידי המערכת. (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 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שמתרחשת כשמבצעים שמירה של מופעי worker עם בקשות רשת ויכולות שמוגדרות כברירת מחדל, שגורמת להוספה מחדש של יכולות שהוסרו, וכתוצאה מכך לשיבוש בפעולה של מופעי worker עם מגבלות רשת. (b/409716532)
  • תיקנו באג שגרם לכך שעובדים עם מגבלות רשת לא יפעלו באופן מיידי בגלל שהמגבלות לא מולאו, למרות שהרשת והיכולות היו זמינות. (b/423403088)

גרסה 2.10.1

‫23 באפריל 2025

androidx.work:work-*:2.10.1 מופץ. גרסה 2.10.1 מכילה את השמירות האלה.

תיקוני באגים

  • הקטנת הסיכוי ש-TooManyRequestsException יופעל מרישום של NetworkCallback ב-WorkManager שמשמש למעקב אחר אילוצים. (b/231499040, ‏ b309d5).

גרסה 2.10.0

‫30 באוקטובר 2024

androidx.work:work-*:2.10.0 מופץ. גרסה 2.10.0 מכילה את השמירות האלה.

שינויים משמעותיים מאז גרסה 2.9.1

  • הוספנו תגי מעקב למשימות מ-WorkManager, כך שהפלט של הפקודה adb shell dumpsys jobscheduler יהיה הרבה יותר קל להבנה כי הוא יכיל את השם של Worker שמופעל. נוספים גם קטעי מעקב סביב אזורים מרכזיים ב-WorkManager.
  • הוספנו את Configuration.workerCoroutineContext כדי לשלוט ב-dispatcher שבו מתבצעת הפעולה CoroutineWorker.
  • מפתחים יכולים לציין NetworkRequest כמגבלה לעובד באמצעות השיטה Constraints.setRequiredNetworkRequest. כך אפשר לקבוע בצורה מפורטת יותר באיזו רשת העובד הזה צריך לפעול.
  • WorkManager 2.10.0 עכשיו עובר קומפילציה עם SDK 35 ומכיל שינויים שונים לצורך תאימות ל-SDK 35.

גרסה ‎2.10.0-rc01

‫24 באוקטובר 2024

androidx.work:work-*:2.10.0-rc01 מופץ. גרסה ‎2.10.0-rc01 מכילה את השמירות האלה.

גרסה ‎2.10.0-beta01

‫2 באוקטובר 2024

androidx.work:work-*:2.10.0-beta01 מופץ. גרסה ‎2.10.0-beta01 מכילה את השמירות האלה.

גרסה ‎2.10.0-alpha04

‫18 בספטמבר 2024

androidx.work:work-*:2.10.0-alpha04 מופץ. גרסה ‎2.10.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • מוסיפים את סיבת ההפסקה STOP_REASON_FOREGROUND_SERVICE_TIMEOUT למקרים שבהם עובד בחזית מופסק בגלל שחלף הזמן הקצוב לתפוגה, על סמך סוג השירות שפועל בחזית. (Ibd0af)

גרסה ‎2.10.0-alpha03

‫4 בספטמבר 2024

androidx.work:work-*:2.10.0-alpha03 מופץ. גרסה ‎2.10.0-alpha03 מכילה את השמירות האלה.

תכונות חדשות

  • הוספנו תגי מעקב למשימות מ-WorkManager, כך שהפלט של הפקודה adb shell dumpsys jobscheduler יהיה הרבה יותר קל להבנה כי הוא יכיל את השם של Worker שמופעל. נוספים גם קטעי מעקב סביב אזורים מרכזיים ב-WorkManager.

שינויים ב-API

  • ‫WorkManager 2.10.0 עובר עכשיו קומפילציה עם SDK 35.
  • תיקון של עובדים שפועלים בחזית מסוג 'שירות קצר' ו'סנכרון נתונים' שפג הזמן שלהם וגרמו ל-ANR כש-WorkManager לא קרא ל-stopSelf(). התיקון הזה רלוונטי רק למכשירים עם API 34 ו-35, שבהם הוצגו סוגים של שירותים שפועלים בחזית. ‫(ca06b2, ‏ b/364508145)
  • ממשקי API חדשים של WorkerParameters שמאפשרים להחליף את התהליך המרוחק שאליו Worker נקשר כשמשתמשים ב-WorkerFactory. (Ibdc8a, Ie8a90, I7373f)

תיקוני באגים

  • תיקון קריסה שנגרמה בגלל WorkManager ניסיון להפעיל מחדש תהליך עובד שפועל לאורך זמן (כלומר, תהליך עובד שפועל בחזית) כשההרשאות הנדרשות לסוג העבודה שפועלת בחזית ב-Android 14 בוטלו. (b/333957914)
  • הסרנו את האפשרות ליצור באופן ידני תרשים של הגישה לממשקי API חדשים של הפלטפורמה, כי זה קורה באופן אוטומטי באמצעות מידול של API כשמשתמשים ב-R8 עם AGP 7.3 ואילך (למשל R8 גרסה 3.3) ובכל הבנייה כשמשתמשים ב-AGP 8.1 ואילך (למשל D8 גרסה 8.1). לקוחות שלא משתמשים ב-AGP מומלץ לעדכן לגרסה 8.1 ואילך של D8. למידע נוסף, מומלץ לעיין במאמר הזה. (Ia60e0, b/345472586)

גרסה ‎2.10.0-alpha02

‫17 באפריל 2024

androidx.work:work-*:2.10.0-alpha02 מופץ. גרסה ‎2.10.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • נוספה האפשרות לשלוח נתוני מעקב באמצעות @RestrictTo Tracer שניתן להגדרה ב-WorkManager. ‫(I17d7f, ‏ b/260214125)
  • הוספנו את Configuration.workerCoroutineContext כדי לשלוט ב-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 מספקות מידע נכון לגבי מאפיין המציין אם ערך יכול להיות ריק (nullability). יכול להיות שיהיה צורך לבצע שינויים בקוד המקור של הלקוחות, אם ההנחות לגבי מאפיין המציין אם ערך יכול להיות ריק (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, אפשר לעקוב אחרי ההתקדמות של Worker באמצעות Flow דרך WorkManager.getWorkInfosFlow ושיטות דומות.
  • עכשיו WorkManager מספק רמז לגבי הסיבה להפסקה של עובד בעבר. אפשר לשלוח שאילתה לגביו מה-Worker עצמו באמצעות השיטה getStopReason() או מ-WorkInfo באמצעות getStopReason().
  • תזמון מדויק של עובדים תקופתיים באמצעות setNextScheduleTimeOverride. כך אפשר לחשב באופן דינמי את לוח הזמנים הבא של העבודה התקופתית, שאפשר להשתמש בו כדי להטמיע תכונות מתקדמות כמו זמני רענון דינמיים, התנהגות מותאמת של ניסיון חוזר או הפעלה של תהליך עובד של עדכוני חדשות לפני שהמשתמש מתעורר כל בוקר בלי סחף. 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)
  • ה-constructor של 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

גרסה ‎2.9.0-alpha02

‫26 ביולי 2023

androidx.work:work-*:2.9.0-alpha02 מופץ. גרסה ‎2.9.0-alpha02 מכילה את השמירות האלה.

תכונות חדשות

  • עכשיו WorkManager מספק רמז לגבי הסיבה להפסקה של עובד בעבר. אפשר לשלוח שאילתה מה-Worker עצמו באמצעות שיטת getStopReason() או מ-WorkInfo באמצעות getStopReason().

שינויים ב-API

  • צירפת את stopReason אל "WorkInfo". הוא יהיה זמין stopReason אחרי שהעובד יסיים את הריצה. הוא יכול לעזור בדיווח 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, אפשר לעקוב אחרי ההתקדמות של Worker באמצעות Flow דרך WorkManager.getWorkInfosFlow ושיטות דומות.
  • תזמון מדויק של עובדים תקופתיים באמצעות setNextScheduleTimeOverride. כך אפשר לחשב באופן דינמי את לוח הזמנים הבא של העבודה התקופתית, שאפשר להשתמש בו כדי להטמיע תכונות מתקדמות כמו זמני רענון דינמיים, התנהגות מותאמת של ניסיון חוזר או הפעלה של תהליך עובד של עדכוני חדשות לפני שהמשתמש מתעורר כל בוקר בלי סחף. ExistingPeriodicWorkPolicy.UPDATE צריך להשתמש בטכניקות האלה כדי להימנע מביטול של תהליך worker שפועל כרגע בזמן שתזמנים את התהליך הבא.
  • WorkManager בודק את ההתאמה של השרשור לייצור. אפשר להשתמש ב-ExecutorsMode.PRESERVE_EXECUTORS כדי לשמור את ה-executors שהוגדרו ב-Configuration ולהשתמש בשרשור הראשי האמיתי.
  • ממשקי API של קורוטינות כמו CoroutineWorker הועברו מארטיפקט נוסף work-runtime-ktx לארטיפקט הראשי work-runtime. השדה work-runtime-ktx ריק עכשיו.

שינויים ב-API

  • ה-constructor של WorkInfo הוא עכשיו ציבורי, וזה יכול להיות שימושי בבדיקות. (Ia00b6, ‏ b/209145335)
  • הספרייה work-runtime-ktx ריקה עכשיו, והספרייה CoroutineWorker וכלי עזר אחרים שספציפיים ל-Kotlin זמינים עכשיו בארטיפקט הראשי work-runtime. (I71a9a)
  • נוספה שיטת setNextScheduleTimeOverride, שמאפשרת הגדרה מדויקת של לוחות זמנים תקופתיים לעבודה (I3b4da)
  • השם של getEarliestRunTimeMillis שונה ל-getNextScheduleTimeMillis. (I2bd7a)
  • פרטי זמן ההפעלה המתוזמנת הבאה מתווספים ל-WorkInfo. (I797e4)
  • פרטים על העיכוב הראשוני והמחזוריות מתווספים ל-WorkInfo. (I52f2f)
  • נוספה שיטה למעקב אחרי עובדים באמצעות Flows דרך השיטות getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow (If122a)
  • הערות חסרות של @RequiresApi(...) נוספו למאפיינים ולבוני אילוצים. הן תואמות עכשיו להערות מקבילות בפונקציות setter ב-Constraints.Builder שהיו קיימות מגרסאות מוקדמות של WorkManager. (I6d7d2)
  • WorkManager יש עכשיו מגבלה נפרדת לעובדי URI של תוכן, כדי להבטיח להם משבצות ב-JobScheduler ולמנוע מצב שבו עדכוני תוכן לא יופיעו בגלל עומס גבוה. אפשר להגדיר את המגבלה באמצעות Configuration.Builder.setContentUriTriggerWorkersLimit. (Ic128f)
  • נוספו אילוצים ל-WorkInfo. (I162c0)

גרסה 2.8

גרסה 2.8.1

‫22 במרץ 2023

androidx.work:work-*:2.8.1 מופץ. גרסה 2.8.1 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה שגיאת ANR ב-RescheduleReceiver שלא טיפלה קודם בצורה נכונה בשני שידורים בו-זמנית. (b/236906724)

גרסה 2.8.0

‫8 בפברואר 2023

androidx.work:work-*:2.8.0 מופץ. גרסה 2.8.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 2.7.0

תכונות חדשות

שינויים ב-API

  • WorkManager.updateWork נוסף כדי לעדכן עבודה ולשמור על זמן ההוספה המקורי שלה לתור ועל השרשור שלה.(I9a248, b/219446409)
  • צירפנו את ExistingPeriodicWorkPolicy.UPDATE למרחב המשותף. המדיניות הזו מאפשרת לעדכן עבודה תקופתית לפי השם. הוא דומה ל-REPLACE הקיים, אבל הוא פחות פולשני: הוא לא מבטל worker אם הוא פועל כרגע, והוא שומר על זמן ההמתנה בתור – העיכוב הראשוני והתקופה מחושבים מזמן ההמתנה המקורי בתור, ולא מזמן העדכון. הוצאנו את REPLACE משימוש כדי לצמצם את הבלבול בין REPLACE לבין UPDATE, ששמותיהם דומים מאוד. אם אתם עדיין רוצים לשמור על הסמנטיקה הקודמת של REPLACE, אתם יכולים להשתמש ב-CANCEL_AND_REENQUEUE שנוסף לאחרונה, שהוא זהה ל-REPLACE. ‫(I985ed, ‏ b/219446409)
  • נוספה האפשרות ליירט חריגים בתזמון באמצעות Consumer<Throwable> דרך setSchedulingExceptionHandler)
  • נוספה האפשרות לספק Consumer<Throwable> באמצעות setInitializationExceptionHandler כדי לקבוע אם היו בעיות בניסיון להפעיל את WorkManager.
  • העזרה המובנית ל-OneTimeWorkRequest ו-PeriodicWorkRequest הועברה מ-androidx.work:work-runtime-ktx אל androidx.work:work-runtime (I0010f, ‏ b/209145335)
  • נוספו שיטות עזר WorkQuery.fromIds, WorkQuery.fromStates, WorkQuery.fromUniqueWorkNames, WorkQuery.fromTags כדי ליצור את WorkQuery ישירות. ‫(b/199919736) (If48f2, b/199919736)
  • getForegroundInfo נוסף לקבוצה Worker. (Ic1ead)
  • RxWorker גם ל-RxJava 2 וגם ל-RxJava 3 יש עכשיו setForeground שמחזיר Completable שאפשר להשתמש בו במקום setForegroundInfoAsync שמחזיר ListenableFuture
  • RxWorker גם ל-RxJava 2 וגם ל-RxJava 3 יש getForegroundInfo שמחזיר Single שאפשר להשתמש בו במקום getForegroundInfoAsync שמחזיר ListenableFuture. (b/203851459)
  • עכשיו אפשר ליצור אילוצים ישירות במקום להשתמש ב-Constraints.Builder, וזה נוח למשתמשי Kotlin. (Idc390, ‏ b/137568653)
  • נוספה אפשרות לבדוק אם WorkManager עבר אתחול. בנוסף, נוסף getConfiguration() API חדש למפתחי ספריות, שמאפשר לקבל את ההגדרה שבוצעה ל-WorkManager. (I6eff3, ‏ b/212300336)

תיקוני באגים

  • תוקנה בעיה בתזמון חמדן שגרמה לכך שעובדים לא יכלו לפעול באופן מיידי כשהם היו בעומס. (I9686b, ‏ b/248111307)
  • הוספנו את @RequiresPermission לממשקי API שנדרשת בהם הרשאת POST_NOTIFICATIONS ב-SDK 33 ואילך. ‫(Ie542e, b/238790278)
  • העברת ביטולים ב-CoroutineScope אל ListenableFuture כשמשתמשים ב-suspendCancellableCoroutine.

גרסה 2.8.0-rc01

‫7 בדצמבר 2022

androidx.work:work-*:2.8.0-rc01 מופץ. גרסה 2.8.0-rc01 מכילה את השמירות האלה.

תכונות חדשות

  • אין תכונות חדשות בגרסה הזו. זו בעיקר גרסה משופרת

גרסה ‎2.8.0-beta02

9 בנובמבר 2022

androidx.work:work-*:2.8.0-beta02 מופץ. גרסה ‎2.8.0-beta02 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה השיטה equals ב-WorkInfo, שלא הביאה בחשבון בעבר מידע על דור חדש. (4977cc)

גרסה ‎2.8.0-beta01

‫5 באוקטובר 2022

androidx.work:work-*:2.8.0-beta01 מופץ. גרסה ‎2.8.0-beta01 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה בתזמון חמדן שגרמה לכך שעובדים לא יכלו לפעול באופן מיידי כשהם היו בעומס. (I9686b, ‏ b/248111307)

גרסה ‎2.8.0-alpha04

‫7 בספטמבר 2022

androidx.work:work-*:2.8.0-alpha04 מופץ. גרסה ‎2.8.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • נוספו הפונקציות WorkerInfo.getGeneration() ו-WorkerParameters.getGeneration() שמחזירות את הדור של העובד. ל-Worker יש כמה דורות אם הוא עודכן באמצעות WorkManager.updateWork או WorkManager.enqueueUniquePeriodicWork באמצעות ExistingPeriodicWorkPolicy.UPDATE. הערה: אם ה-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 הקיים, אבל הוא פחות פולשני: הוא לא מבטל worker אם הוא פועל כרגע, והוא שומר על זמן ההמתנה בתור – העיכוב הראשוני והתקופה מחושבים מזמן ההמתנה המקורי בתור, ולא מזמן העדכון. המאפיין REPLACE הוצא משימוש כדי למנוע בלבול בין REPLACE לבין UPDATE, ששמותיהם דומים מאוד. אם אתם עדיין רוצים לשמור על הסמנטיקה הקודמת של REPLACE, אתם יכולים להשתמש ב-CANCEL_AND_REENQUEUE שנוסף לאחרונה, שהוא זהה ל-REPLACE. (I985ed, ‏ b/219446409)
  • הוספת היכולת ליירט חריגות בתזמון על ידי הגדרת SchedulingExceptionHandler. (I033eb)
  • העזרה המובנית ל-OneTimeWorkRequest ו-PeriodicWorkRequest הועברה מ-androidx.work:work-runtime-ktx אל androidx.work:work-runtime (I0010f, ‏ b/209145335)

תיקוני באגים

  • הוספנו את @RequiresPermission לממשקי API שנדרשת בהם הענקת ההרשאה POST_NOTIFICATIONS ב-SDK 33 ומעלה. ‫(Ie542e, b/238790278)

גרסה ‎2.8.0-alpha02

‫6 באפריל 2022

androidx.work:work-*:2.8.0-alpha02 מופץ. גרסה ‎2.8.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • מעכשיו אפשר ליצור אילוצים ישירות במקום להשתמש ב-Builder, וזה נוח למשתמשי Kotlin. (Idc390, ‏ b/137568653)
  • נוספה אפשרות לבדוק אם WorkManager עבר אתחול. בנוסף, נוסף getConfiguration() API חדש למפתחי ספריות, שמאפשר לקבל את ההגדרה שבוצעה ל-WorkManager. (I6eff3, ‏ b/212300336)

גרסה ‎2.8.0-alpha01

‫12 בינואר 2022

androidx.work:work-*:2.8.0-alpha01 מופץ. גרסה ‎2.8.0-alpha01 מכילה את השמירות האלה.

שינויים ב-API

  • נוספו שיטות עזר WorkQuery.fromStates, WorkQuery.fromUniqueWorkNames, WorkQuery.fromTags כדי ליצור WorkQuery ישירות. (If48f2, b/199919736)
  • נוספו שיטות ניסיוניות של BuildCompat ל-SDK עתידיים (Iafd82, ‏ b/207528937)
  • הוספה של getForegroundInfo אל Worker. (Ic1ead)
  • נוספו שיטות עזר WorkQuery.fromIds ליצירת WorkQuery ישירות ממזהים (Ie5bdf, b/199919736)
  • ל-RxWorker יש עכשיו setForeground שמוחזר 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

תיקוני באגים

  • כשמשימות דחופות מתוזמנות מחדש, הן כבר לא דחופות. הן הופכות למשימות רגילות.

גרסה ‎2.7.0-alpha03

21 באפריל 2021

androidx.work:work-*:2.7.0-alpha03 מופץ. גרסה ‎2.7.0-alpha03 מכילה את השמירות האלה.

תכונות חדשות

שינויים ב-API

גרסה ‎2.7.0-alpha02

‫10 במרץ 2021

androidx.work:work-*:2.7.0-alpha02 מופץ. גרסה ‎2.7.0-alpha02 מכילה את השמירות האלה.

תיקוני באגים

  • כדי לתקן קריסה כשמטרגטים ל-Android מגרסה 12, צריך להגדיר את יכולת השינוי של PendingIntent באופן מפורש. (b/180884673)

גרסה ‎2.7.0-alpha01

18 בפברואר 2021

androidx.work:work-*:2.7.0-alpha01 מופץ. גרסה ‎2.7.0-alpha01 מכילה את השמירות האלה.

תכונות חדשות

  • ב-WorkManager יש WorkRequest.Builder.setExpedited(...)API חדש שמתחשב במגבלות בסיוע שירות שפועל בחזית ב-Android 12.

    אפליקציות לא יכולות יותר להפעיל שירות שפועל בחזית כשהן פועלות ברקע. לכן, כדי לתמוך טוב יותר בעבודות שרצות לאורך זמן, שבעבר היו קשורות למחזור החיים של שירות בחזית, אפליקציות יכולות לסמן WorkRequest כדחופות.

    ממשק ה-API הזה מחליף את ממשקי ה-API ‏setForegroundAsync(...) / setForeground(...), שהוצאו משימוש.

    כשמשתמשים ב-setExpedited(...),‏ WorkManager מעביר את העבודה למשימות מואצות ב-JobScheduler החל מ-Android 12, תוך שמירה על תאימות לאחור בגרסאות קודמות של Android על ידי העברת העבודה לשירותים שפועלים בחזית.

שינויים ב-API

  • הוספת תמיכה בWorkRequests מהירים.

גרסה 2.6.0

גרסה 2.6.0

‫1 בספטמבר 2021

androidx.work:work-*:2.6.0 מופץ. גרסה 2.6.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 2.5.0

  • ‫WorkManager משתמש עכשיו ב-androidx.startup כדי לאתחל את WorkManager. אם השתמשתם ב-tools:node="remove" כדי לאתחל את WorkManager בעבר, אתם צריכים לבצע את הפעולות הבאות במקום זאת.ContentProvider

    <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.work.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    
    <!-- If you want to disable android.startup completely. -->
     <provider
                android:name="androidx.startup.InitializationProvider"
                android:authorities="${applicationId}.androidx-startup"
                tools:node="remove" />
    
  • הוספנו תמיכה ב-Workers שיכולים לפעול בכל תהליך. (Iaf200)

  • הוספנו את RemoteCoroutineWorker, שהוא הטמעה של RemoteListenableWorker שיכולה להיקשר לתהליך מרוחק. (I30578)

גרסה ‎2.6.0-rc01

4 באוגוסט 2021

androidx.work:work-*:2.6.0-rc01 מופץ. גרסה ‎2.6.0-rc01 מכילה את השמירות האלה.

הגרסה הזו זהה לגרסה androidx.work:work-*:2.6.0-beta02.

גרסה ‎2.6.0-beta02

21 ביולי 2021

androidx.work:work-*:2.6.0-beta02 מופץ. גרסה ‎2.6.0-beta02 מכילה את השמירות האלה.

תיקוני באגים

  • האפליקציה RemoteWorkManager מבטלת עכשיו את הקישור שלה ל-RemoteWorkManagerService בצורה נכונה, וכך מאפשרת ל-RemoteWorkManagerService לנקות את עצמה בצורה נכונה. aosp/1730694
  • RemoteListenableWorker מבטל עכשיו את הקישור מ-RemoteWorkerService בצורה נכונה, וכך מאפשר ל-RemoteWorkerService לנקות את הנתונים בצורה נכונה. aosp/1743817
  • ForceStopRunnable פועל עכשיו רק בתהליך האפליקציה הראשי. זהו אופטימיזציה, והוא מונע תחרות על משאבים באפליקציות שמשתמשות בכמה תהליכים. aosp/1749180, aosp/1761729

גרסה ‎2.6.0-beta01

‫2 ביוני 2021

androidx.work:work-*:2.6.0-beta01 מופץ. גרסה ‎2.6.0-beta01 מכילה את השמירות האלה.

הגרסה הזו כוללת שיפורים קלים במסמכים. הגרסה הזו זהה ברובה לגרסה 2.6.0-alpha02.

גרסה ‎2.6.0-alpha02

21 באפריל 2021

androidx.work:work-*:2.6.0-alpha02 מופץ. גרסה ‎2.6.0-alpha02 מכילה את השמירות האלה.

תכונות חדשות

  • נוספה תמיכה ב-Workers שיכולים לפעול בכל תהליך. (Iaf200)

  • נוסף RemoteCoroutineWorker, הטמעה של RemoteListenableWorker שאפשר לקשר לתהליך מרוחק. (I30578)

שינויים ב-API

  • הוספנו תמיכה בהגבלת הרשת TEMPORARILY_UNMETERED. (I08d5e)
  • תמיכה בעובדים מרובי-תהליכים ב-setProgressAsync(). (Ib6d08)
  • הופכים את WorkManagerInitializer לציבורי כדי שandroidx.startup.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 מכילה את השמירות האלה.

תכונות חדשות

  • כדי להשתמש ב-id כדי לשלוח שאילתות ל-WorkInfo, צריך להוסיף API ל-WorkQuery. ‫(aosp/1412372, b/157335295)
  • ‫WorkManager תומך טוב יותר באפליקציות שמשתמשות בכמה תהליכים, באמצעות ארטיפקט חדש (androidx.work:work-multiprocess:*). הארטיפקט החדש הזה עוזר לפתור כמה בעיות שקיימות באפליקציות גדולות, כולל:
    • בדרך כלל צריך להפעיל את WorkManager בכל תהליך של אפליקציה. זה לא טוב כי יש יותר תחרות על SQLite, שגורמת לבעיות אחרות. ל-WorkManager יש עכשיו ממשקי API חדשים שאפשר להשתמש בהם כדי להגדיר תהליך ראשי של אפליקציה באמצעות Configuration#setDefaultProcessName(processName). ‫processName הוא שם תהליך מלא שנראה כך: packageName:processName (למשל, com.example:remote).
    • קבוצה של ממשקי API חדשים: RemoteWorkManager ו-RemoteWorkContinuation לבקשות עבודה של enqueue, cancel ו-query. ממשקי ה-API האלה לא כוללים וריאציות של LiveData כדי למנוע התנגשות ב-SQLite בכמה תהליכים. כל השיחות אל enqueue, cancel ו-query מועברות לתהליך של אפליקציית primary באמצעות AIDL ומחזירות ListenableFuture שוטף. ‪(aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)

שינויים ב-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). כלומר, האפליקציה יכולה להריץ הרבה יותר WorkRequest כשהיא פועלת בחזית. כדי לנהל את ההרצה של עבודה מושהית בחזית, 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)
  • השמות של ה-methods 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 שמציג אזהרה כש-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 שבודק משכי זמן לא חוקיים של מרווחים ב-PeriodicWorkRequests. (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 שצריך להשתמש בהם כשמשתמשים ישירות בממשקי API של JobService.WorkManager (aosp/1223567)

שינויים ב-API

  • הוספת ExistingWorkPolicy.APPEND_OR_REPLACE, שדומה ל-APPEND, אבל מחליפה שרשרת שבוטלה או שלא עמדה בדרישות המוקדמות. (b/134613984, aosp/1199640)

  • אפשרות להוסיף RunnableScheduler מותאם אישית כדי לעקוב אחרי WorkRequest שצריך להפעיל בעתיד. המאפיין הזה משמש את מתזמן התהליכים. (aosp/1203944)

תיקוני באגים

  • הוצאנו משימוש את setProgress() ב-RxWorker כי בעבר היא החזירה Single<Void>, שהוא סוג בלתי אפשרי. הוספנו API חדש setCompletableProgress() שמחזיר Completable במקום זאת, והוספנו כללי Lint חדשים שעוזרים לבצע מיגרציה לממשקי ה-API החדשים. (b/150080946, aosp/1242665)

גרסה 2.3.4

גרסה 2.3.4

‫18 במרץ 2020

androidx.work:work-*:2.3.4 מופץ. גרסה 2.3.4 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן באג שגרם להפעלה של כמה מופעים של Workers ארוכים, אחרי חריגה מחלון ההפעלה של 10 דקות. (aosp/1247484, b/150553353)
  • תיקון של lint IssueRegistry ב-WorkManager. תודה ל-@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 כשמשתמשים ב-foregroundServiceTypes ב-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.0 stable.

שינויים ב-API

  • שם הפונקציה ForegroundInfo.getNotificationType() שונה ל-ForegroundInfo.getForegroundServiceType() כדי שתהיה עקביות רבה יותר עם ממשקי ה-API של הפלטפורמה הבסיסית. (b/142729893, ‏ aosp/1143316)

תיקוני באגים

  • תוקן באג שנגרם כתוצאה מקריאה מיותרת ל-setTransactionSuccessful() מחוץ לטרנזקציה. זה קורה בהעברות נדירות. (b/142580433, ‏ aosp/1141737)

גרסה ‎2.3.0-alpha02

‫9 באוקטובר 2019

androidx.work:work-*:2.3.0-alpha02 מופץ. גרסה ‎2.3.0-alpha02 מכילה את השמירות האלה.

תכונות חדשות

  • ‫WorkManager תומך עכשיו בהרצת עבודות חשובות או עבודות שדורשות זמן רב, שהמערכת צריכה להשאיר פעילות. מידע נוסף זמין במאמר בנושא ListenableWorker#setForegroundAsync() (או CoroutineWorker#setForeground() ל-Kotlin). (aosp/1133636)

שינויים ב-API

  • ה-API של containsKey ב-Data משנה את השם ל-hasKeyWithValueOfType. גם השם של שיטת התוסף המתאימה בספריית ktx שונה. (b/141916545)

תיקוני באגים

  • ‫WorkManager מתזמן את העבודה בצורה הוגנת כשמספר הפעולות WorkRequestשנוספו לתור מתקרב למגבלות התזמון. (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 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תכונות חדשות

  • ListenableWorkers יכולים עכשיו להגדיר את ההתקדמות באמצעות setProgressAsync() API. בנוסף, הוספנו API תואם של suspend-ing setProgress ב-CoroutineWorker ו-setProgress ב-RxWorker שמחזיר Single<Void>. באמצעות ממשקי ה-API החדשים האלה, אפשר להעביר מידע על ההתקדמות באמצעות WorkInfo, שיש לו API תואם של getProgress. (b/79481554)
  • ל-Data יש API‏ containsKey() שאפשר להשתמש בו כדי לאמת שלנתוני הקלט ל-Worker יש מפתחות עם הסוג הצפוי. (b/117136838)
  • עכשיו אפשר לבצע סריאליזציה של Data באמצעות Data.toByteArray() ו-Data.fromByteArray(). שימו לב: אין ערבויות לגבי ניהול גרסאות ב-Data, ולכן לא מומלץ לשמור אותו או להשתמש בו לתקשורת בין תהליכים (IPC) בין אפליקציות. הם בטוחים לשימוש רק בין כמה תהליכים של אותה אפליקציה .
  • נוספה האפשרות לציין InputMergerFactory באמצעות Configuration.setInputMergerFactory. (b/133273159)

שינויים ב-API

  • ‫WorkManager יציג מופע של IllegalStateException אם WorkerFactory מחזיר מופע של ListenableWorker שהופעל בעבר. (b/139554406)
  • עדכנו את המסמכים בנושא ListenableFuture ביטול וonStopped() קריאה חוזרת ב-ListenableWorker. (b/138413671)

תיקוני באגים

  • כלי התזמון בתהליך מתעלם עכשיו מWorkRequest עם האילוץ idle. הבקשות האלה נאספות עכשיו רק על ידי JobScheduler כשהמכשיר נמצא בפועל בidle. (aosp/1089779)
  • TestScheduler משתמש עכשיו בצורה נכונה ב-Executor שצוין עבור מנהל ביצוע המשימות הפנימי שלו בבדיקות. (aosp/1090749)

גרסה 2.2.0

גרסה 2.2.0

‫15 באוגוסט 2019

androidx.work:work-*:2.2.0 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

הגרסה הזו זהה לגרסה androidx.work:work-*:2.2.0-rc01.

שינויים חשובים בגרסה 2.2.0 לעומת גרסה 2.1.0

androidx.work:work-gcm:2.2.0 הוא ארטיפקט חדש של Maven שתומך בשימוש ב-GCMNetworkManager כמתזמן כש-Google Play Services זמין לרמות API ‏ <= 22. זוהי תלות אופציונלית שעוזרת לעיבוד רקע אמין ויעיל יותר בגרסאות ישנות יותר של API. אם האפליקציה שלכם משתמשת ב-Google Play Services, מוסיפים את התלות הזו לקובץ ה-gradle כדי לקבל תמיכה ב-GCMNetworkManager באופן אוטומטי. אם Play Services לא זמין, WorkManager ימשיך לחזור ל-AlarmManager במכשירים ישנים יותר.

גרסה ‎2.2.0-rc01

30 ביולי 2019

androidx.work:work-*:2.2.0-rc01 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תיקוני באגים

  • תוקן באג בהטמעה של AlarmManager שגורם לשירות להיסגר מוקדם מדי, וכתוצאה מכך ל-RejectedExecutionException במקרים נדירים. (aosp/1092374) (b/138238197).
  • הוספנו פתרון עקיף לבעיה NullPointerException כשמשתמשים בממשקי API של JobScheduler במכשירים מסוימים. ‪(aosp/1091020) (b/138364061), (b/138441699)

גרסה ‎2.2.0-beta02

‫19 ביולי 2019

androidx.work:work-*:2.2.0-beta02 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תיקוני באגים

  • הוסרה תלות לא מכוונת ב-jacoco שהתווספה ב-2.2.0-beta01.

גרסה ‎2.2.0-beta01

‫17 ביולי 2019

androidx.work:work-*:2.2.0-beta01 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תכונות חדשות

  • androidx.work:work-gcm:2.2.0-beta01 הוא ארטיפקט חדש של Maven שתומך בשימוש ב-GCMNetworkManager כמתזמן כש-Google Play Services זמין לרמות API ‏ <= 22. זוהי תלות אופציונלית שעוזרת לעיבוד רקע מהימן ויעיל יותר בגרסאות ישנות יותר של API. אם האפליקציה שלכם משתמשת ב-Google Play Services, מוסיפים את התלות הזו לקובץ ה-gradle כדי לקבל תמיכה ב-GCMNetworkManager באופן אוטומטי. אם Play Services לא זמין, WorkManager ימשיך לחזור ל-AlarmManager במכשירים ישנים יותר.

תיקוני באגים

  • תיקון ל-IllegalArgumentException כשעוקבים אחרי מצב הרשת בטאבלטים של Nvidia Shield K1. (aosp/1010188)

גרסה 2.1.0

גרסה 2.1.0

‫11 ביולי 2019

androidx.work:work-*:2.1.0 מופץ. הגרסה הזו זהה לגרסה androidx.work:work-*:2.1.0-rc01.

שינויים חשובים מאז גרסה 2.0.1

  • מעכשיו צריך להשתמש ב-Java 8 כדי להוריד את work-runtime-ktx. אם נתקלתם בבעיות, תוכלו להוסיף את הקוד הבא ל-build.gradle: kotlinOptions { jvmTarget = "1.8" }
  • נוספה הפעלה לפי דרישה של WorkManager, שתיצור WorkManager רק כשמתבצעת הפניה אליו. ‫b/127497100 כדי להגדיר את הפרויקט לאתחול לפי דרישה:
    1. השבתת ההגדרה האוטומטית.
    2. מטמיעים את Configuration.Provider באובייקט Application המותאם אישית.
    3. שינוי כל ההפניות של 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 בפריט המידע שנוצר בתהליך פיתוח (Artifact) 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
  • תוקן באג שגרם לסטיות בחלונות ההפעלה של WorkRequests בגלל סיום התהליך. 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 כדי להגדיר את הפרויקט לאתחול לפי דרישה:
    1. השבתת ההגדרה האוטומטית.
    2. מטמיעים את Configuration.Provider באובייקט Application המותאם אישית.
    3. שינוי כל ההפניות של WorkManager.getInstance() ל-WorkManager.getInstance(Context). כחלק מהשינוי הזה, הוצאנו משימוש את WorkManager.getInstance(). תמיד בטוח יותר להתקשר למספר החדש WorkManager.getInstance(Context), גם אם לא מבצעים הפעלה לפי דרישה.
  • הוספנו את האפשרות ליצור מחלקות Worker ו-ListenableWorker שניתנות לבדיקת יחידות באמצעות TestWorkerBuilder ו-TestListenableWorkerBuilder בפריט המידע שנוצר בתהליך פיתוח (Artifact) 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
  • עדכנו את התיעוד של PeriodicWorkRequests כדי לציין שאין תמיכה בשעות גמישות ב-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.

תלויות בגרסאות קודמות ל-AndroidX

מידע על שימוש בתוספי Kotlin זמין במאמרי העזרה של KTX.
מסמכי עזר: 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

גרסה 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

זוהי הגרסה השנייה המועמדת להפצה של גרסה 1.0.0 היציבה של WorkManager. הגרסה הזו כוללת שני תיקוני באגים.

תיקוני באגים

  • Workers are now correctly scheduled after an application crash. 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.
  • הועבר לשימוש בתלות Room 1.1.1 במקום 1.1.1-rc01. הגרסאות האלה זהות. b/122578011

גרסה ‎1.0.0-beta01

‫19 בדצמבר 2018

הגרסה הזו לא כוללת שינויים ב-API. מעכשיו, WorkManager צפוי להישאר יציב ב-API עד לגרסה הבאה, אלא אם תהיה בעיה קריטית. הגרסה הזו כוללת כמה תיקוני באגים.

תיקוני באגים

  • ילדים שבוטלו בעבר בעקבות עבודת הורה שהושלמה בהצלחה לא יפעלו יותר. b/120811767
  • מחלקות רישום ביומן שעברו אתחול בצורה תקינה (מוצגות בעיקר במהלך בדיקות).

גרסה ‎1.0.0-alpha13

‫12 בדצמבר 2018

הגרסה הזו כוללת שינוי קל ב-API שיעזור לחלק מהמשתמשים ב-Kotlin.

שינויים ב-API

  • המחלקות androidx.work.Result הועברו להיות מחלקות פנימיות של ListenableWorker. כך נמנעות התנגשויות של refactoring עם המחלקה Result ברמה העליונה של Kotlin. זהו שינוי משמעותי ב-API. b/120564418

שינויים ב-API שעלולים לגרום לבעיות

  • המחלקות androidx.work.Result הועברו להיות מחלקות פנימיות של ListenableWorker.

גרסה ‎1.0.0-alpha12

‫5 בדצמבר 2018

הגרסה הזו כוללת כמה שינויים ב-API שעלולים לגרום לכשל. מידע נוסף זמין בקטע שינויים ב-API שעלולים לגרום לכשל בהמשך. סביר להניח שהגרסה הזו תפורסם כגרסת הבטא הראשונה שלנו. ‫alpha12 כולל גם עדכונים נרחבים בתיעוד.

שינויים ב-API

  • פריט מידע שנוצר בתהליך פיתוח (Artifact) חדש, work-rxjava2, כולל את RxWorker. זהו ListenableWorker שמצפה ל-Single<Payload>.
  • התמיכה ב-Firebase JobDispatcher הוסרה בגלל ההוצאה הקרובה משימוש. המשמעות היא שלא נעדכן יותר את ארטיפקט work-firebase כשהמוצר יעבור לגרסת בטא. אנחנו נבדוק אפשרות להוסיף חלופה בעתיד.
  • השילוב של Payload ב-Result. ‫Result הוא עכשיו 'סיווג אטום' עם שלוש הטמעות קונקרטיות, שאפשר לקבל דרך Result.success() (או Result.success(Data)),‏ Result.failure() (או Result.failure(Data)) ו-Result.retry(). התוצאה של ListenableFuture היא עכשיו Result במקום Payload. ל-Worker אין שיטות getter ו-setter לפלט Data. זהו שינוי שעלול לגרום לכשל.
  • נוספו Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit) ו-Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit) ווריאנטים כדי לשפר את התמיכה בכתובות URI של תוכן שמופעלות לאט. b/119919774
  • נוספה וריאציה WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration). השיטה הזו דורשת API 26.
  • נוספו methods מסוג Operation.await() ו-ListenableFuture.await() לתוספים של Kotlin.
  • השם של Operation.getException() שונה ל-Operation.getThrowable(). זהו שינוי שעלול לגרום לכשל.
  • השימוש בשיטות ובמחלקות ContentUriTriggers שמתייחסות אליהן כבר לא זמין לציבור. זהו שינוי שעלול לגרום לכשל.
  • הוסרו שאר ה-methods עם מספר משתנה של ארגומנטים ב-WorkManager, ב-WorkContinuation וב-OneTimeWorkRequest כדי לייעל את ה-API. כדי לפתור בעיות ב-build, אפשר להוסיף את Arrays.asList(...) ל-varargs הקיימים. אנחנו עדיין כוללים גרסאות של כל שיטה עם ארגומנט יחיד. זהו שינוי שעלול לגרום לכשל.
  • הוסרו WorkContinuation.combine(OneTimeWorkRequest, *) וריאציות. הם הציגו API מבלבל. קל יותר להבין את ה-methods הקיימים של combine. זהו שינוי שעלול לגרום לכשל.

תיקוני באגים

  • הטמעות של גרסאות קודמות ל-Marshmallow אמינות יותר עכשיו בשחזור ממצב של השבתת תהליך של משימה שכבר פועלת.
  • LiveData שנצפה דרך observeForever מתבצע מעקב דרך WorkManager. זוהי העברה לאחור של תיקון בספריית Room. b/74477406
  • Data.Builder.build() מעכשיו יוצר חריגה אם האובייקט שעבר סריאליזציה חורג מהגודל המקסימלי שלו. בעבר, זה היה קורה רק בשרשור ברקע, ולא הייתה אפשרות לטפל בזה כמו שצריך.
  • הוספנו הבחנה בין עבודה שהופסקה לבין עבודה שבוטלה. getWorkInfoById() יחזיר WorkInfo עם CANCELLED State במהלך ListenableWorker.onStopped().
  • התייחסות לnull Results כאל כשלים ב-ListenableWorker. b/120362353
  • תיקון ספקולטיבי ל-Shield Tablets עם API 24, שלפעמים הציגו IllegalArgumentException. b/119484416

שינויים ב-API שעלולים לגרום לבעיות

  • התמיכה ב-Firebase JobDispatcher הוסרה בגלל ההוצאה הקרובה משימוש. המשמעות היא שלא נעדכן יותר את ארטיפקט work-firebase כשהמוצר יעבור לגרסת בטא. אנחנו נבדוק אפשרות להוסיף חלופה בעתיד.
  • השילוב של Payload ב-Result. ‫Result הוא עכשיו 'סיווג אטום' עם שלוש הטמעות קונקרטיות, שאפשר לקבל דרך Result.success() (או Result.success(Data)),‏ Result.failure() (או Result.failure(Data)) ו-Result.retry(). התוצאה של ListenableFuture היא עכשיו Result במקום Payload. ל-Worker אין שיטות getter ו-setter לפלט Data.
  • נוספו methods מסוג Operation.await() ו-ListenableFuture.await() לתוספים של Kotlin.
  • השם של Operation.getException() שונה ל-Operation.getThrowable().
  • השימוש בשיטות ובמחלקות ContentUriTriggers שמתייחסות אליהן כבר לא זמין לציבור.
  • הסרנו את שאר השיטות של 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 הציבורי כדי לשפר את הארגונומיה של ה-API.
  • מוסיפים WorkManager.enqueueUniqueWork() API כדי להוסיף לתור OneTimeWorkRequest ייחודיים בלי ליצור WorkContinuation.
  • כל הווריאציות של הפונקציות enqueue ו-cancel ב-WorkManager מחזירות עכשיו סוג חדש של Operation. זהו שינוי שעלול לגרום לכשל.
  • כל הווריאציות של enqueue לא מקבלות יותר varargs עבור WorkRequests. זהו שינוי שעלול לגרום לכשל. במקום זאת, אפשר להשתמש באוספים. אפשר להשתמש ב-Arrays.asList() כדי לשנות קוד קיים. עשינו את זה כדי לצמצם את שטח ה-API ואת מספר ה-methods.
  • ניסיון לבצע initialize WorkManager יותר מפעם אחת בכל תהליך יגרום עכשיו להצגת 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.
  • ניסיון לבצע initialize WorkManager יותר מפעם אחת בכל תהליך יגרום עכשיו להצגת IllegalStateException.

גרסה ‎1.0.0-alpha10

‫11 באוקטובר 2018

הגרסה הזו תומכת בעבודה אסינכרונית שנשלטת על ידי מפתחים. בגרסה הזו יש שינויים ב-API שעלולים לגרום לכשל. מידע נוסף זמין בקטע שינויים ב-API שעלולים לגרום לכשל שבהמשך.

אנחנו צופים ש-WorkManager ייכנס לשלבים האחרונים של תקופת האלפא שלו. אנחנו מצפים שה-API יהיה יציב בגרסת הבטא, לכן נשמח לקבל ממך משוב במעקב הבעיות שלנו.

שינויים ב-API

  • הוסרו כל ה-methods והמחלקה deprecated שהוצאו משימוש בעבר, במיוחד ה-constructor Worker שמוגדר כברירת מחדל. זהו שינוי ב-API שעלול לגרום לכשל.
  • השם NonBlockingWorker שונה ל-ListenableWorker, ועכשיו זו כיתה ציבורית לא מוסתרת ומוכנה לשימוש.
    • ListenableWorker מספק גישה ל-method מופשטת אחת, ListenableFuture<Payload> onStartWork(), שמופעלת בשרשור הראשי. אתם צריכים להתחיל ולעבד את העבודה באופן אסינכרוני. בסיום, צריך לעדכן את ListenableFuture בהתאם. הטמעות לדוגמה של ListenableFuture מסופקות בחבילה Futures ב-alpha02 (ראו בהמשך בקטע WorkManager).
    • Worker מרחיב את ListenableWorker וממשיך לפעול כמו קודם, עם שיטת Result doWork() מופשטת.
    • העברנו כמה שיטות וחברים מ-Worker אל ListenableWorker.
    • בקרוב נספק יישומי הפניה ל-ListenableWorker שמשתמשים ב-Kotlin coroutines (אחרי שגרסאות היציבות יפורסמו) וב-RxJava2.
  • הממשק WorkerFactory וההטמעה הקונקרטית DefaultWorkerFactory מוזגו למחלקה מופשטת שנקראת WorkerFactory. ההטמעה מבטיחה שההתנהגות שמוגדרת כברירת מחדל ומבוססת על שיקוף תופעל כניסיון אחרון לכל מופעי WorkerFactory שנוצרו על ידי המשתמש. זהו שינוי שעלול לגרום לכשל.
  • הוסרו WorkManager.synchronous() ו-WorkContinuation.synchronous() וכל ה-methods שקשורים אליהם. נוסף ListenableFuture<Void> כסוג ההחזרה של הרבה methods ב-API. זהו שינוי ב-API שעלול לגרום לכשל.
    • עכשיו אפשר לקבל ולצפות באופן סינכרוני באמצעות ListenableFuture. לדוגמה, הפקודה WorkManager.enqueue() החזירה בעבר את הערך void, אבל עכשיו היא מחזירה את הערך ListenableFuture<Void>. אחרי שהפעולה תושלם, תוכלו לקרוא ל-ListenableFuture.addListener(Runnable, Executor) או ל-ListenableFuture.get() כדי להריץ את הקוד.
    • שימו לב שהתגובות האלה לא מציינות אם הפעולה הצליחה או נכשלה, אלא רק שהיא הסתיימה.ListenableFuture עדיין תצטרכו לשרשר שיטות של WorkManager כדי לקבל את המידע הזה.
    • אנחנו מתעלמים מקריאות cancel() באובייקטים האלה, כי הן מבלבלות וקשה להבין אותן (האם מבטלים את הפעולה או את העבודה שנובעת ממנה?). הפעולה הזו מתבצעת במסגרת החוזה של Future.
    • כדי לשמור על שוויון עם ה-methods הסינכרוניים של getStatus*, הוספנו וריאציות של ListenableFuture ושינינו את השם של ה-methods הקיימים שהחזירו LiveData כך שיכללו במפורש את המחרוזת LiveData (לדוגמה, getStatusesByIdLiveData(UUID)). זהו שינוי משמעותי ב-API.

תיקוני באגים

  • תוקנה הבעיה המוכרת מגרסה אלפא09 שקשורה לקובצי 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:

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.
    • הבנאים שמוגדרים כברירת מחדל עבור Worker ו-NonBlockingWorker מסומנים עכשיו כבנאים שיצאו משימוש. צריך להשתמש ב-constructor החדש (Worker(Context, WorkerParameters)) ולקרוא ל-super(Context, WorkerParameters). בגרסאות עתידיות של WorkManager, ה-constructor שמוגדר כברירת מחדל יוסר.
  • התחלנו להשתמש בארטיפקט החדש ListenableFuture באופן פנימי (ללא תלות ב-Guava). בגרסאות הקרובות של ה-API, נוסיף את ListenableFutures. השינוי הזה יתמוך בהסתרת NonBlockingWorker.
  • הוספנו אפשרות להפעיל עבודה מתוזמנת ב-TestDriver באמצעות TestDriver.setInitialDelayMet(UUID) ו-TestDriver.setPeriodDelayMet(UUID). b/113360060

שינויי תוכנה שעלולים לגרום לכשלים

  • השימוש בבוני ברירת המחדל Worker ו-NonBlockingWorker הוצא משימוש. מומלץ לעבור לקונסטרוקטור החדש בהקדם האפשרי. בגרסאות עתידיות, בנאי ברירת המחדל יוסר.

גרסה ‎1.0.0-alpha08

‫27 באוגוסט 2018

תיקוני באגים

  • רכיבי WorkManager מסומנים באופן מפורש כרכיבים שלא מודעים להפעלה ישירה, כדי שלא יופעלו במהלך הפעלה ישירה. בעתיד נספק גרסה של WorkManager שתתמוך בהפעלה ישירה. b/112665532
  • תוקנה בעיה שבה עבודה שבוצעה מחדש לא פעלה. b/112604021
  • תוקנה בעיה שגרמה לכך שעבודות תקופתיות לא בוצעו שוב ושוב (קשורה לבעיה שלמעלה). b/112859683
  • מדיניות ההשהיה מכובדת כשתהליך האפליקציה כבר פועל.
  • תיקנו את הודעות החריגה ב-Data כדי לציין שהמגבלה היא 10KB.
  • הורד הערך המקסימלי של Configuration.setMaxSchedulerLimit(int) ל-50 כדי להתחשב בזמן השהיה מסוים בסיום העיבוד של JobScheduler. b/112817355

גרסה ‎1.0.0-alpha07

‫16 באוגוסט 2018

תיקוני באגים

  • תוקנה שאילתת SQL פוטנציאלית עם מגבלות שליליות שיכולה להחזיר מספר בלתי מוגבל של תוצאות.
  • עכשיו, כשעבודה מסיימת את ההרצה שלה, היא מבטלת בצורה נכונה את כל העותקים שממתינים של העבודה הזו במתזמנים אחרים. הדבר הוביל לחריגה מהמגבלה של JobScheduler עבודות. b/111569265
  • תוקנה בעיה מסוג ConcurrentModificationException ב-ConstraintTracker. b/112272753
  • הערות מסוג החזרה של Data.getBooleanArray(String) ו-Data.getIntArray(String) השתנו ל-@Nullable במקום ל-@NonNull. b/112275229

שינויים ב-API

  • Worker מרחיב עכשיו מחלקה חדשה, NonBlockingWorker. השינוי הזה לא משפיע על השימוש הנוכחי. בעתיד, NonBlockingWorker יהפוך לישות נתמכת באופן מלא לפתרונות מותאמים אישית של שרשור.
  • הערות מסוג החזרה של Data.getBooleanArray(String) ו-Data.getIntArray(String) השתנו ל-@Nullable במקום ל-@NonNull. b/112275229
  • תוספים ל-Kotlin: הוצא משימוש Map.toWorkData() והוסף workDataOf(vararg Pair<String, Any?>) ברמה העליונה כדי לשמור על עקביות עם ממשקי API קיימים.

גרסה ‎1.0.0-alpha06

‫1 באוגוסט 2018

תיקוני באגים

  • מניעת נעילת מסד נתונים בתזמון עבודה. b/111801342
  • תוקן באג שגרם לכך שהפעולה PeriodicWork לא בוצעה לפי לוח הזמנים כשהמכשיר היה במצב שינה. b/111469837
  • תיקון מרוץ תהליכים במעקב אחר אילוצים שגורם לקריסה של WorkManager. googlecodelabs/android-workmanager/issues/56
  • כשמשתמשים ב-WorkRequest.Builder#build(), צריך ליצור WorkRequest ייחודיים. b/111408337
  • מומלץ להפעיל את השימוש ב-RescheduleReceiver רק אם יש WorkRequest שזקוקים לכך. b/111765853

גרסה ‎1.0.0-alpha05

‫24 ביולי 2018

שינויים ב-API

  • הערת המידע על WorkManager.getInstance() היא עכשיו @NonNull במקום @Nullable. במקום זאת, אם הסינגלטון לא מאותחל בצורה תקינה במקרים של אתחול ידני, השיטה תזרוק IllegalStateException. זהו שינוי ב-API שגורם לבעיות תאימות.
  • נוסף API חדש, ‏ Configuration.Builder.setMinimumLoggingLevel(int), שמאפשר לשלוט ברמת הפירוט של WorkManager. כברירת מחדל, WorkManager מתעד נתונים ברמה Log.INFO ומעלה.
  • השתנה החתימה של Data.getString() כך שהיא לא מקבלת יותר ערך ברירת מחדל (היא null באופן מרומז). זהו שינוי משמעותי ב-API.
  • סימנתי כמה שיטות שנדרשות רק לשימוש פנימי בסימן @hide. זה כולל את ה-constructor‏ Constraints,‏ 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. זה כולל את ה-constructor‏ Constraints,‏ Data.toByteArray() ו-Data.fromByteArray(byte[]).

גרסה ‎1.0.0-alpha04

‫26 ביוני 2018

תיקוני באגים

  • ההפעלות של PeriodicWorkRequest מתוזמנות עכשיו מחדש בצורה נכונה כשמשתמשים בהטמעה שמבוססת על AlarmManager.
  • תוקנה בעיה פוטנציאלית של ANR (האפליקציה לא מגיבה) כשמבצעים תזמון מחדש של כל העובדים אחרי סגירה ידנית או הפעלה מחדש. b/110507716
  • הוספנו אנוטציות לגבי מאפיין המציין אם ערך יכול להיות ריק (nullability) לממשקי 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() returns true when 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 יש עכשיו פרמטר additional 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 לממשקי 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.