WorkManager

בעזרת WorkManager API קל לתזמן משימות אסינכרוניות שניתנות לדחייה ושחייבות לפעול בצורה מהימנה. ממשקי ה-API האלה מאפשרים ליצור משימה ולהעביר אותה ל-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

  • נוסף WorkMetricsQuery API לסינון פרטי מדדים (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's execution 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 אל 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 ב-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. כך אפשר לקבוע בצורה מדויקת יותר באיזו רשת העובד הזה צריך לפעול.
  • ‫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 מספקות מידע נכון לגבי האפשרות להגדיר ערך 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

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

תכונות חדשות

שינויים ב-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

תיקוני באגים

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

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

    אפליקציות לא יכולות יותר להפעיל שירות שפועל בחזית כשהן פועלות ברקע. לכן, כדי לתמוך טוב יותר בעבודה שמתבצעת לאורך זמן ושבעבר הייתה קשורה למחזור החיים של שירות שפועל בחזית, אפליקציות יכולות לסמן 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)

שינויים ב-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.Builder factory methods 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 שבודק משכי זמן לא תקינים של מרווחים עבור 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 כשמשתמשים ישירות בממשקי JobService API. (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.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

  • השם של containsKey API ב-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() ListenableWorker 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 יקפיץ הודעת שגיאה (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 כדי להגדיר את הפרויקט לאתחול לפי דרישה:
    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 בפריט המידע 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 כדי להגדיר את הפרויקט לאתחול לפי דרישה:
    1. השבתת האתחול האוטומטי.
    2. מטמיעים את Configuration.Provider באובייקט Application המותאם אישית.
    3. תשנה את כל ההפניות אל 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

מידע על שימוש בתוספי Kotlin זמין במאמרי העזרה של KTX.
מסמכי עזר: 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.
  • הועבר לשימוש בתלות Room 1.1.1 במקום 1.1.1-rc01. הגרסאות האלה זהות. b/122578011

גרסה ‎1.0.0-beta01

‫19 בדצמבר 2018

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

תיקוני באגים

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

גרסה ‎1.0.0-alpha13

‫12 בדצמבר 2018

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

שינויים ב-API

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

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

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

גרסה ‎1.0.0-alpha12

‫5 בדצמבר 2018

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

שינויים ב-API

  • ארטיפקט חדש, work-rxjava2, מציג את RxWorker. זהו ListenableWorker שמצפה ל-Single<Payload>.
  • הוסר התמיכה ב-Firebase JobDispatcher בגלל ההוצאה שלו משימוש. המשמעות היא שלא נעדכן יותר את ארטיפקט work-firebase כשהמוצר יעבור לגרסת בטא. אנחנו נבדוק אפשרות להוסיף חלופה בעתיד.
  • שילוב של Payload עם Result. ‫Result הוא עכשיו 'סיווג אטום' עם שלוש הטמעות קונקרטיות, שאפשר לקבל דרך Result.success() (או Result.success(Data)),‏ Result.failure() (או Result.failure(Data)) ו-Result.retry(). התוצאה של ListenableFuture עכשיו היא Result במקום Payload. ל-Worker אין שיטות getter ו-setter לפלט Data. זהו שינוי שעלול לגרום לבעיות.
  • נוספו Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit) ו-Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit) ווריאציות כדי לשפר את התמיכה בכתובות URI של תוכן עם הפעלה איטית. b/119919774
  • נוספה וריאציה של WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration). השיטה הזו דורשת API 26.
  • נוספו 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 עם 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 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.
  • ניסיון לבצע 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 מספק גישה לשיטה מופשטת אחת, 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. זה כולל את ה-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

תיקוני באגים

  • עכשיו מתזמנים מחדש את 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() 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 כולל עכשיו פרמטר נוסף 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.