WorkManager

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

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

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

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

dependencies {
    def work_version = "2.10.1"

    // (Java only)
    implementation "androidx.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "androidx.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "androidx.work:work-rxjava2:$work_version"

    // optional - GCMNetworkManager support
    implementation "androidx.work:work-gcm:$work_version"

    // optional - Test helpers
    androidTestImplementation "androidx.work:work-testing:$work_version"

    // optional - Multiprocess support
    implementation "androidx.work:work-multiprocess:$work_version"
}
dependencies {
    val work_version = "2.10.1"

    // (Java only)
    implementation("androidx.work:work-runtime:$work_version")

    // Kotlin + coroutines
    implementation("androidx.work:work-runtime-ktx:$work_version")

    // optional - RxJava2 support
    implementation("androidx.work:work-rxjava2:$work_version")

    // optional - GCMNetworkManager support
    implementation("androidx.work:work-gcm:$work_version")

    // optional - Test helpers
    androidTestImplementation("androidx.work:work-testing:$work_version")

    // optional - Multiprocess support
    implementation("androidx.work:work-multiprocess:$work_version")
}

מידע על שימוש בתוספים של Kotlin זמין במסמכי התיעוד של ktx.

מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ל-build.

משוב

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

דיווח על בעיה חדשה

מידע נוסף זמין במסמכי התיעוד של Issue Tracker.

גרסה 2.10

גרסה 2.10.1

23 באפריל 2025

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

תיקוני באגים

  • צמצום הסיכוי לזריקת TooManyRequestsException מהרישום של WorkManager של NetworkCallback המשמש למעקב אחר אילוצים. ((b/231499040)[https://issuetracker.google.com/231499040], b309d5).

גרסה 2.10.0

30 באוקטובר 2024

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

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

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

גרסה 2.10.0-rc01

24 באוקטובר 2024

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

גרסה 2.10.0-beta01

2 באוקטובר 2024

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

גרסה 2.10.0-alpha04

18 בספטמבר 2024

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

שינויים ב-API

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

גרסה 2.10.0-alpha03

4 בספטמבר 2024

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

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

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

גרסה 2.10.0-alpha02

17 באפריל 2024

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

שינויים ב-API

  • נוספה היכולת להפיק קטעי מעקב באמצעות @RestrictTo Tracer שניתן להגדיר ב-WorkManager. (I17d7f, ‏ b/260214125)
  • Configuration.workerCoroutineContext נוסף כדי לשלוט במרכז ההפצה שבו מתבצע CoroutineWorker. מומלץ להימנע לחלוטין משימוש ב-Dispatchers.Default ב-WorkManager. (Icd1b7)
  • הוספת מנהלים מותאמים אישית של חריגות ל-Workers (Ib1b74, ‏ b/261190695)
  • עכשיו אפשר ליצור את OneTimeWorkRequest.Builder ו-PeriodicWorkRequest.Builder באמצעות KClass במקום Class: val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build() (Ib55f6)
  • הכיתה WorkManager הועברה ל-Kotlin. עכשיו שיטות שמחזירות את הערכים LiveData, ‏ ListenableFuture או Flow מספקות מידע נכון לגבי האפשרות של ערך לאפס. יכול להיות שיהיה צורך בשינויים בקוד המקור של הלקוחות, אם ההנחות לגבי יכולת האיפוס של משתנים בקוד הזה היו שגויות. (If6757)

גרסה 2.10.0-alpha01

24 בינואר 2024

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

תכונות חדשות

  • מפתחים יכולים לציין את NetworkRequest כמגבלה לעובד באמצעות השיטה Constraints.setRequiredNetworkRequest. כך אפשר לשלוט בצורה מפורטת יותר ברשת שבה העובד הזה יפעל.

שינויים ב-API

  • הוספת היכולת לציין את NetworkRequest כאילוץ. (Id98a1, ‏ b/280634452)

גרסה 2.9

גרסה 2.9.1

7 באוגוסט 2024

androidx.work:work-*:2.9.1 משוחרר. גרסת 2.9.1 כוללת את ההוספות האלה.

תיקוני באגים

גרסה 2.9.0

29 בנובמבר 2023

androidx.work:work-*:2.9.0 משוחרר. גרסה 2.9.0 כוללת את ההצהרות האלה.

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

  • יכולת תצפית באמצעות Flow. במקום LiveData, עכשיו אפשר לעקוב אחרי ההתקדמות של העובד באמצעות Flow דרך WorkManager.getWorkInfosFlow ושיטות דומות.
  • עכשיו השדה WorkManager מספק רמז לגבי הסיבה לכך שעובד הופסק בעבר. אפשר לשלוח שאילתה עליו מהעובד עצמו באמצעות השיטה getStopReason() או מ-WorkInfo באמצעות getStopReason().
  • תזמון מדויק של עובדים תקופתיים באמצעות setNextScheduleTimeOverride. כך אפשר לבצע חישוב דינמי של לוח הזמנים הבא של העבודה המחזורית, שאפשר להשתמש בו כדי להטמיע תכונות מתקדמות כמו זמני רענון מותאמים אישית, התנהגות מותאמת אישית של ניסיונות חוזרים או הפעלה של עובד של פיד החדשות לפני שהמשתמש מתעורר כל בוקר בלי שיהיו שינויים לא צפויים. כדי להימנע מביטול של עובד שפועל כרגע בזמן תזמון של העובד הבא, צריך להשתמש בשיטות האלה עם ExistingPeriodicWorkPolicy.UPDATE.
  • בדיקה של WorkManager עם תהליכים תואמים בסביבת הייצור. אפשר להשתמש ב-ExecutorsMode.PRESERVE_EXECUTORS ב-initializeTestWorkManager כדי לשמור את המבצעים שהוגדרו ב-Configuration ולהשתמש בשרשור הראשי האמיתי.
  • ממשקי API של קורוטינים כמו CoroutineWorker הועברו מהארטיפקט הנוסף work-runtime-ktx לארטיפקט הראשי work-runtime. הארטיפקט work-runtime-ktx ריק עכשיו.

שינויים ב-API

  • stopReason נוסף לקבוצה WorkInfo. הוא הופך את stopReason לזמין אחרי שהעובד פועל. יכול להיות שזה יעזור בדיווח stopReason בצורה שימושית, כי אחרי שעובד נעצר, האפליקציה עצמה יכולה להיפסק במהירות רבה. (I21386)
  • מאפשרים להגדיר את Clock דרך קובץ התצורה ולהשתמש בו כדי לקבוע את רצף הביצוע של בדיקות Worker. (Ic586e)
  • נוספה ל-ListenableWorker השיטה getStopReason() שמספקת רמז לגבי הסיבה לכך שהעובד הופסק. (I07060)
  • הוספנו את WorkManagerTestInitHelper#closeWorkDatabase() כדי למנוע את האזהרה של Closeguard לגבי דליפת משאבים. (Ia8d49)
  • ה-constructor של WorkInfo הוא עכשיו ציבורי, ויכול להיות שימושי לצורכי בדיקה. (Ia00b6, ‏ b/209145335)
  • work-runtime-ktx ריק עכשיו, ו-CoroutineWorker ותוכנות שירות ספציפיות אחרות ל-Kotlin זמינות עכשיו בארטיפקט הראשי של סביבת זמן הריצה. (I71a9a)
  • נוספה השיטה setNextScheduleTimeOverride, שמאפשרת להגדיר לוחות זמנים תקופתיים לעבודה בצורה מדויקת (I3b4da)
  • הוספנו את getNextScheduleTimeMillis כדי לקבל מידע על זמני הריצה המתוזמנים. המידע הזה יתווסף ל-WorkInfo. (I797e4)
  • פרטי העיכוב הראשוני והתדירות מתווספים ל-WorkInfo. (I52f2f)
  • נוספה השיטה observe workers via Flows באמצעות השיטות getWorkInfosByTagFlow, ‏ getWorkInfoByIdFlow, ‏ getWorkInfosForUniqueWorkFlow, ‏ getWorkInfosFlow (If122a)
  • נוספו הערות @RequiresApi(...) חסרות למאפיינים ולמגדירים של Constraints. הן תואמות עכשיו להערות התואמות על ה-setters ב-Constraints.Builder שהיו בגרסאות מוקדמות של WorkManager. (I6d7d2)
  • עכשיו יש ב-WorkManager מגבלה נפרדת לעובדים של URI של תוכן, כדי להבטיח להם משבצות ב-JobScheduler וכך למנוע מצב שבו עדכוני תוכן יישארו ללא מענה בגלל עומס גבוה. אפשר להגדיר את המגבלה באמצעות Configuration.Builder.setContentUriTriggerWorkersLimit. (Ic128f)
  • המגבלות מתווספות ל-WorkInfo. (I162c0)

גרסה 2.9.0-rc01

18 באוקטובר 2023

androidx.work:work-*:2.9.0-rc01 משוחרר. גרסה 2.9.0-rc01 כוללת את ההוספות האלה.

  • לא בוצעו שינויים מאז הגרסה הקודמת של הבטא

גרסה 2.9.0-beta01

6 בספטמבר 2023

androidx.work:work-*:2.9.0-beta01 משוחרר. גרסה 2.9.0-beta01 מכילה את ההצהרות האלה.

שינויים ב-API

גרסה 2.9.0-alpha02

26 ביולי 2023

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

תכונות חדשות

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

שינויים ב-API

  • stopReason נוסף לקבוצה WorkInfo. הוא מאפשר גישה ל-stopReason אחרי שהעובד רץ. יכול להיות שזה יעזור בדיווח stopReason בצורה שימושית, כי אחרי שעובד נעצר, האפליקציה עצמה יכולה להיפסק במהירות רבה. (I21386)
  • מאפשרים להגדיר את השעון דרך ההגדרות ולהשתמש בו כדי לקבוע את סדר הביצוע של בדיקות Worker. (Ic586e)
  • נוספה ל-ListenableWorker השיטה getStopReason() שמספקת רמז לגבי הסיבה לכך שהעובד הופסק. (I07060)
  • הוספנו את WorkManagerTestInitHelper#closeWorkDatabase() כדי למנוע את האזהרה של Closeguard לגבי דליפת משאבים. (Ia8d49)

תיקוני באגים

  • הוספנו את היכולת לעקוף את overrideNextScheduleTime באמצעות TestDriver ותיקנו בעיות שקשורות ליכולת הבדיקה. (Ic2905)

גרסה 2.9.0-alpha01

7 ביוני 2023

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

תכונות חדשות

  • יכולת תצפית באמצעות Flow. במקום LiveData, עכשיו אפשר לעקוב אחרי ההתקדמות של העובד באמצעות Flow דרך WorkManager.getWorkInfosFlow ושיטות דומות.
  • תזמון מדויק של עובדים תקופתיים באמצעות setNextScheduleTimeOverride. כך אפשר לבצע חישוב דינמי של לוח הזמנים הבא של העבודה המחזורית, שאפשר להשתמש בו כדי להטמיע תכונות מתקדמות כמו זמני רענון מותאמים אישית, התנהגות מותאמת אישית של ניסיונות חוזרים או הפעלה של עובד של פיד החדשות לפני שהמשתמש מתעורר כל בוקר בלי שיהיו שינויים לא צפויים. כדי להימנע מביטול של עובד שפועל כרגע בזמן תזמון של העובד הבא, צריך להשתמש ב-ExistingPeriodicWorkPolicy.UPDATE בשילוב עם השיטות האלה.
  • בדיקה של WorkManager עם תהליך עיבוד תגובה (threading) שתואמת להפקה. אפשר להשתמש ב-ExecutorsMode.PRESERVE_EXECUTORS כדי לשמור את המבצעים שהוגדרו ב-Configuration ולהשתמש בשרשור הראשי האמיתי.
  • ממשקי API של קורוטינים, כמו CoroutineWorker, הועברו מהארטיפקט הנוסף work-runtime-ktx לארטיפקט הראשי work-runtime. השדה work-runtime-ktx ריק עכשיו.

שינויים ב-API

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

גרסה 2.8

גרסה 2.8.1

22 במרץ 2023

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

תיקוני באגים

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

גרסה 2.8.0

8 בפברואר 2023

androidx.work:work-*:2.8.0 משוחרר. גרסה 2.8.0 כוללת את ההצהרות האלה.

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

תכונות חדשות

שינויים ב-API

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

תיקוני באגים

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

גרסה 2.8.0-rc01

7 בדצמבר 2022

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

תכונות חדשות

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

גרסה 2.8.0-beta02

9 בנובמבר 2022

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

תיקוני באגים

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

גרסה 2.8.0-beta01

5 באוקטובר 2022

androidx.work:work-*:2.8.0-beta01 משוחרר. גרסה 2.8.0-beta01 כוללת את ההצהרות האלה.

תיקוני באגים

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

גרסה 2.8.0-alpha04

7 בספטמבר 2022

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

שינויים ב-API

  • נוספו הפונקציות WorkerInfo.getGeneration() ו-WorkerParameters.getGeneration() שמחזירות את הדור של העובד. לעובד יש כמה דורות, אם הוא עודכן דרך WorkManager.updateWork או WorkManager.enqueueUniquePeriodicWork באמצעות ExistingPeriodicWorkPolicy.UPDATE. שימו לב: אם העובד פועל כרגע, יכול להיות שהשיטה הזו תחזיר דור חדש יותר מזה של העובד שפועל כרגע, אם בוצע עדכון במהלך ביצוע העובד. (I665c5, ‏ b/219446409) (I128a9, ‏ b/219446409)
  • הוספנו את InitializationExceptionHandler, טיפול בחריגות שאפשר להשתמש בו כדי לקבוע אם היו בעיות בניסיון לאתחל את WorkManager. (I061de)

גרסה 2.8.0-alpha03

10 באוגוסט 2022

androidx.work:work-*:2.8.0-alpha03 משוחרר. גרסה 2.8.0-alpha03 כוללת את ההצהרות האלה.

תכונות חדשות

  • נוספה היכולת לעדכן את WorkRequests באופן לא פולשני, תוך שמירה על זמן ההוספה המקורי לתור, על שרשור וכו'. פרטים נוספים זמינים במאמרים WorkManager.updateWork ו-ExistingPeriodicWorkPolicy.UPDATE.

שינויים ב-API

  • הוספנו את WorkManager.updateWork כדי לעדכן את העבודה תוך שמירה על שעת ההוספה לתור המקורית והשרשור שלה.(I9a248, ‏ b/219446409)
  • צירפנו את ExistingPeriodicWorkPolicy.UPDATE למרחב המשותף. המדיניות הזו מאפשרת לעדכן עבודה תקופתית לפי השם שלה. הוא דומה ל-REPLACE הקיים, אבל פחות פולשני: הוא לא מבטל עובד אם הוא פועל כרגע, והוא שומר את זמן ההוספה לתור – התקופה והעיכוב הראשוני מחושבים מזמן ההוספה המקורי לתור, ולא מזמן העדכון. הוצאנו משימוש את REPLACE כדי למנוע בלבול בין REPLACE לבין UPDATE, שהשמות שלהם דומים מאוד. אם אתם עדיין רוצים לשמור על הסמנטיקה הקודמת של REPLACE, תוכלו להשתמש ב-CANCEL_AND_REENQUEUE החדש שנוסף, שהוא זהה ל-REPLACE. (I985ed, ‏ b/219446409)
  • הוספת היכולת ליירט חריגות לתזמון על ידי הגדרת SchedulingExceptionHandler. (I033eb)
  • החלופות ל-OneTimeWorkRequest ול-PeriodicWorkRequest בקוד הועברו מ-androidx.work:work-runtime-ktx אל androidx.work:work-runtime (I0010f, ‏ b/209145335)

תיקוני באגים

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

גרסה 2.8.0-alpha02

6 באפריל 2022

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

שינויים ב-API

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

גרסה 2.8.0-alpha01

12 בינואר 2022

androidx.work:work-*:2.8.0-alpha01 משוחרר. גרסה 2.8.0-alpha01 כוללת את ההצהרות האלה.

שינויים ב-API

  • נוספו שיטות העזר WorkQuery.fromStates,‏ WorkQuery.fromUniqueWorkNames ו-WorkQuery.fromTags כדי ליצור WorkQuery ישירות. (If48f2, ‏ b/199919736)
  • נוספו שיטות ניסיוניות של BuildCompat לערכות SDK עתידיות (Iafd82, ‏ b/207528937)
  • מוסיפים את getForegroundInfo ל-Worker. (Ic1ead)
  • נוספו שיטות עזר WorkQuery.fromIds ליצירת WorkQuery ישירות ממזהים. (Ie5bdf, ‏ b/199919736)
  • ל-RxWorker יש עכשיו את setForeground שמחזיר את Completable, שאפשר להשתמש בו במקום setForegroundInfoAsync שמחזיר את ListenableFuture. (I85156)
  • ב-RxWorker ל-RxJava 2 יש עכשיו getForegroundInfo שמחזיר Single שאפשר להשתמש בו במקום getForegroundInfoAsync שמחזיר ListenableFuture. (I21c91, ‏ b/203851459)
  • ב-RxWorker ל-RxJava 3 יש עכשיו getForegroundInfo שמחזיר Single שאפשר להשתמש בו במקום getForegroundInfoAsync שמחזיר ListenableFuture. (I1ca8a)
  • ל-RxWorker יש עכשיו את setForeground שמחזיר את Completable, שאפשר להשתמש בו במקום setForegroundInfoAsync שמחזיר את ListenableFuture. (I992a3, ‏ b/203851459)

תיקוני באגים

  • להעביר ביטולים ב-CoroutineScope אל ה-ListenableFuture כשמשתמשים ב-suspendCancellableCoroutine. (I77e63)

גרסה 2.7

גרסה 2.7.1

17 בנובמבר 2021

androidx.work:work-*:2.7.1 משוחרר. גרסה 2.7.1 כוללת את ההצהרות האלה.

תיקוני באגים

  • ביטולים ב-CoroutineScope מועברים ל-ListenableFuture כשמשתמשים ב-suspendCancellableCoroutine. (I77e63)
  • חריגה תושלח באופן מיידי כשבקשות עבודה שהתעכבו מסומנות כטיפול מהיר. bef1762

גרסה 2.7.0

13 באוקטובר 2021

androidx.work:work-*:2.7.0 משוחרר. גרסה 2.7.0 כוללת את ההצהרות האלה.

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

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

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

גרסה 2.7.0-rc01

29 בספטמבר 2021

androidx.work:work-*:2.7.0-rc01 משוחרר. גרסה 2.7.0-rc01 כוללת את ההוספות האלה.

הגרסה הזו זהה ל-androidx.work:work-*:2.7.0-beta01.

גרסה 2.7.0-beta01

1 בספטמבר 2021

androidx.work:work-*:2.7.0-beta01 משוחרר. גרסה 2.7.0-beta01 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

תכונות חדשות

  • צמצום התחרות על SQLite במספר תהליכים בזמן האינטליקציה של WorkManager.

שינויים ב-API

  • מסירים את ממשקי ה-API של @ExperimentalExpeditedWork כי ממשקי ה-API של הפלטפורמה הבסיסית ל-Android 12 (S) יציבים. (aosp/1792806)

תיקוני באגים

  • הצגת הודעה טובה יותר על שגיאה לעובדים עם תהליך מהיר שלא מטמיעים את getForegroundInfoAsync(). (aosp/1809376)

גרסה 2.7.0-alpha05

21 ביולי 2021

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

הגרסה הזו כוללת גם תיקוני באגים מהגרסה WorkManager 2.6.0-beta02.

גרסה 2.7.0-alpha04

2 ביוני 2021

androidx.work:work-*:2.7.0-alpha04 משוחרר.

הגרסה הזו כוללת גם את השינויים מהגרסה 2.6.0-beta01.

שינויים ב-API

תיקוני באגים

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

גרסה 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 מכילה את ההצהרות האלה.

תיקוני באגים

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

גרסה 2.7.0-alpha01

18 בפברואר 2021

androidx.work:work-*:2.7.0-alpha01 משוחרר. גרסה 2.7.0-alpha01 כוללת את ההצהרות האלה.

תכונות חדשות

  • ב-WorkManager נוסף ממשק API חדשWorkRequest.Builder.setExpedited(...) שמביא בחשבון את המגבלות על שירותים שפועלים בחזית ב-Android 12.

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

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

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

שינויים ב-API

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

גרסה 2.6.0

גרסה 2.6.0

1 בספטמבר 2021

androidx.work:work-*:2.6.0 משוחרר. גרסה 2.6.0 כוללת את ההצהרות האלה.

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

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

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

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

גרסה 2.6.0-rc01

4 באוגוסט 2021

androidx.work:work-*:2.6.0-rc01 משוחרר. גרסה 2.6.0-rc01 כוללת את ההצהרות האלה.

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

גרסה 2.6.0-beta02

21 ביולי 2021

androidx.work:work-*:2.6.0-beta02 משוחרר. גרסה 2.6.0-beta02 כוללת את ההצהרות האלה.

תיקוני באגים

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

גרסה 2.6.0-beta01

2 ביוני 2021

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

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

גרסה 2.6.0-alpha02

21 באפריל 2021

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

תכונות חדשות

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

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

שינויים ב-API

  • נוספה תמיכה באילוץ רשת TEMPORARILY_UNMETERED. (I08d5e)
  • תמיכה בעובדים עם תהליכים מרובים ב-setProgressAsync(). (Ib6d08)
  • מגדירים את WorkManagerInitializer כציבורי כדי ש-androidx.startup.Initializer אחרים יוכלו להשתמש בהם כיחסי תלות. (I5ab11)

גרסה 2.6.0-alpha01

24 במרץ 2021

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

תכונות חדשות

  • WorkManager משתמש עכשיו ב-androidx.startup כדי לאתחל את WorkManager. בעבר, androidx.work.impl.WorkManagerInitializer היה אחראי על כך. (aosp/1608813)

    אם השתמשתם ב-tools:node="remove" ב-ContentProvider שמשמש להפעלה של מחזור החיים של התהליך בעבר, צריך לבצע את הפעולות הבאות במקום זאת.

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.work.impl.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (או)

     <!-- If you want to disable android.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

שינויים ב-API

  • מוסיפים ממשק API מסוג Result.getOutputData() שמחזיר את outputData של ListenableWorker. (Ie51e3)

תיקוני באגים

  • הוספת פתרון זמני לבאג של OEM שגורם להשלכת SecurityException בזמן השימוש בממשקי API של AlarmManager. (aosp/1587518)

גרסה 2.5.0

גרסה 2.5.0

27 בינואר 2021

androidx.work:work-*:2.5.0 משוחרר. גרסה 2.5.0 כוללת את השמירות האלה.

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

  • ארטיפקט :work:work-multiprocess חדש לאפליקציות שמשתמשות בכמה תהליכים. כך אפשר לשפר את הביצועים על ידי איחוד תזמון של בקשות עבודה לתהליך יחיד.
    • כדי להשתמש ב-work-multiprocess, צריך להגדיר תלות ב-: implementation "androidx.work:work-multiprocess:2.5.0"
    • מגדירים תהליך ראשי באמצעות Configuration.Builder.setDefaultProcessName(String).
    • כשמשתמשים ב-work-multiprocess, כדאי גם להשתמש ב-RemoteWorkManager כדי לנהל את ה-WorkRequest. RemoteWorkManager תמיד פונה לתהליך הייעודי. גם מתזמן התהליך פועל בתהליך הייעודי.
  • לפעמים, ActivityManager לא יכול ליצור מופע של JobService כדי להתחיל משימה. כתוצאה מכך, המשימה הבסיסית תושלם ללא הודעה בגלל באג בפלטפורמה. WorkManager מוודא עכשיו שיש משימות גיבוי לכל WorkRequest יחיד כשApplication מופעל על ידי משימות התאמה. כך אפשר לשפר משמעותית את האמינות של ביצוע המשימות. (b/172475041, ‏ aosp/1489577)
  • WorkManager מגביל את הגדלת מסד הנתונים על ידי צמצום משך המאגר שבו מתבצע מעקב אחרי WorkRequest אחרי השלמת WorkRequest. משך הזמן היה 7 ימים לפני כן. הוא צומצם ל-1 יום + משך הזמן שצוין ב-keepResultsForAtLeast. (aosp/1419708)
  • TestListenableWorkerBuilder תומך עכשיו בכיתה המופיעה מחדש שמרחיבה את ListenableWorker כדי להקל על הבדיקה. (aosp/1443299, ‏ b/169787349)
  • הכלי לבדיקת WorkManager זמין עכשיו כשמשתמשים ב-Android Studio Arctic Fox.

גרסה 2.5.0-rc01

13 בינואר 2021

androidx.work:work-*:2.5.0-rc01 משוחרר. גרסה 2.5.0-rc01 כוללת את ההוספות האלה.

תיקוני באגים

  • תוקן באג שבו getWorkInfosLiveData לא בוטל כראוי אחרי שהישויות עודכנו כשמשתמשים ב-API שמבוסס על WorkQuery. (aosp/1540566, ‏ b/173769028)
  • תוקן באג שבו עסקאות במסד נתונים לא סומנו כעסקאות מוצלחות במקרים נדירים. זה גורם לבעיות במכשירי Motorola מסוימים. (aosp/1535368, ‏ b/175944460)
  • תוקן באג שגרם להתעלמות מ-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 מגביל באופן אוטומטי את מספר ה-WorkRequest שיכולים להילקח על ידי מתזמן התהליך. הבקשות עדיין מתבצעות לפי סדר FIFO. (aosp/1455228)
  • WorkManager מנסה לשחזר את הנתונים כשמאגר הנתונים של האפליקציה נמצא במצב פגום. (aosp/1463103)

תיקוני באגים

  • כשהפעולות ב-ListenableWorker מופסקות, צריך לסמן אותן כ-ENQUEUED באופן מיידי כדי שאפשר יהיה לתזמן אותן מחדש בהמשך. (aosp/1455618, ‏ b/170273988)

גרסה 2.5.0-alpha03

14 באוקטובר 2020

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

שינויים ב-API

  • ב-TestListenableWorkerBuilder וב-TestWorkerBuilder לא נעשה שימוש בסוגי נתונים גולמיים. (I883ad, ‏ b/169787349)

תיקוני באגים

  • משתמשים ב-ApplicationInfo כדי לקבוע את השם של תהליך האפליקציה שמוגדר כברירת מחדל. (b/168716641, ‏ aosp/1429950)
  • מתקנים את כללי החשיפה של RemoteWorkManager ושל RemoteWorkContinuation. ממשקי ה-API האלה כבר לא מסומנים כ-@Restricted. (aosp/1432091)
  • מתקנים את כללי Proguard עבור :work:work-multiprocess. (aosp/1432091)
  • שיפור מחזור החיים של התראות לגבי משימות ממושכות שמקושרות לשירות שפועל בחזית. (b/168502234, ‏ aosp/1431331)

גרסה 2.5.0-alpha02

16 בספטמבר 2020

androidx.work:work-*:2.5.0-alpha02 משוחרר. גרסה 2.5.0-alpha02 מכילה את השמירות האלה.

תכונות חדשות

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

שינויים ב-API

  • עכשיו, WorkManager מסיר באופן אגרסיבי יותר משימות WorkRequest שהושלמו ואין להן יחסי תלות חלקיים. משך המאגר השתנה מ-7 ימים ל-1 יום. (aosp/1419708)

תיקוני באגים

  • עכשיו WorkManager מתאם משימות באופן יזום, כך שמשימות WorkRequest ומשימות JobScheduler מסונכרנות כשWorkManager מופעל. (aosp/1412794, ‏ b/166292069)

גרסה 2.5.0-alpha01

19 באוגוסט 2020

androidx.work:work-*:2.5.0-alpha01 משוחרר. גרסה 2.5.0-alpha01 מכילה את ההצהרות האלה.

תכונות חדשות

  • שינויים בממשקי API פנימיים שמאפשרים לנו לספק כלים טובים יותר עם WorkManager בעתיד. כדאי להמשיך להתעדכן.

תיקוני באגים

  • טיפול ב-SecurityExceptions במהלך מעקב אחר מצב הרשת במכשירים מסוימים. (aosp/1396969)

תרומה חיצונית

  • תיקון של מסמכי העזרה של ArrayCreatingInputMerger על ידי Zac Sweers (github/43).

גרסה 2.4.0

גרסה 2.4.0

22 ביולי 2020

androidx.work:work-*:2.4.0 משוחרר. גרסה 2.4.0 כוללת את ההצהרות האלה.

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

  • מעכשיו התזמון בתוך התהליך של WorkManager יעיל יותר. בעבר, Scheduler בתהליך היה מתייחס רק לביצוע עבודה שלא התעכבה ושהתקיימו בה האילוצים. עכשיו מתבצע מעקב אחרי WorkRequests שעשויים להתבצע בעתיד, כולל PeriodicWorkRequests, על ידי מתזמן התהליך. גם Scheduler בתהליך לא פועל לפי מגבלות התזמון (אבל עדיין מוגבל לגודל של Executor שבו משתמש WorkManager). פירוש הדבר הוא שהאפליקציה יכולה עכשיו לבצע הרבה יותר בקשות WorkRequest כשהיא בחזית. כדי לנהל את ביצוע העבודה המושהית בחזית, WorkManager כולל גם את ההגדרה החדשה RunnableScheduler. (aosp/1185778)
  • עכשיו יש תמיכה ב-RxJava 3 ב-WorkManager. כדי להשתמש ב-RxJava 3, צריך לכלול את התלות הבאה: implementation "androidx.work:work-rxjava3:2.4.0". (aosp/1277904)
  • הוספנו את היכולת להריץ שאילתות ל-WorkInfo באמצעות WorkQuery. האפשרות הזו שימושית למפתחים שרוצים לשלוח שאילתות ל-WorkInfo לפי שילוב של כמה מאפיינים. מידע נוסף זמין במאמרים WorkQuery.Builder.fromStates(...), WorkQuery.Builder. fromTags(...) או WorkQuery.Builder.fromUniqueWorkNames(...). (aosp/1253230, ‏ b/143847546)
  • מוסיפים את היכולת לבקש מ-WorkManager מידע אבחון באמצעות:

    adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
    

    המידע הזה כולל הרבה פרטים שימושיים, כולל:

    • בקשות תמיכה שהושלמו ב-24 השעות האחרונות.
    • בקשות WorkRequest שפועלות כרגע.
    • בקשות עבודה מתוזמנות. (aosp/1235501)
  • מוסיפים את ExistingWorkPolicy.APPEND_OR_REPLACE, שדומה ל-APPEND, אבל מחליף שרשרת שבה תנאים מוקדמים בוטלו או נכשלו. (b/134613984, ‏ aosp/1199640)

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

  • הוספנו תמיכה בהוספה דינמית של מפעלים להענקת גישה, כשמשתמשים ב-DelegatingWorkerFactory. (b/156289105,‏aosp/1309745)

  • התאמת המעקב של אילוצים של BATTERY_NOT_LOW לפלטפורמה. (aosp/1312583)

  • מתזמן התהליך משתמש עכשיו בממשקי API משופרים כדי לקבוע את שם התהליך. האפשרות הזו שימושית לתמיכה טובה יותר באפליקציות שמשתמשות במספר תהליכים. (aosp/1324732)

  • כללי Lint חדשים לאכיפה של:

    • שימוש ב-foregroundServiceType הנכון כשמשתמשים בממשקי API של setForegroundAsync(). (b/147873061, ‏ aosp/1215915)
    • ציון מזהי JobScheduler שבהם WorkManager צריך להשתמש כשמשתמשים ישירות בממשקי ה-API של JobService. aosp/1223567
    • הוספנו כלל איתור שגיאות חדש שמבטיח שהטמעות של ListenableWorker הן עכשיו public כשמשתמשים ב-WorkerFactory שמוגדרת כברירת מחדל. (aosp/1291262)
  • קריאות ל-setForegroundAsync() שלא מסתיימות לפני השלמת ListenableWorker יקבלו עכשיו אות באמצעות IllegalStateException ב-ListenableFuture המוחזר. (aosp/1262743)

  • תוקן באג שבו ה-ForegroundService לא נעצר אחרי שה-Worker בחזית מופסק. (b/155579898, ‏ aosp/1302153)

  • תיקון באג שבו WorkManager מנסה להריץ כמה מכונות של Worker שמקושרות לשירות בחזית (b/156310133,‏ aosp/1309853)

גרסה 2.4.0-rc01

24 ביוני 2020

androidx.work:work-*:2.4.0-rc01 משוחרר. גרסה 2.4.0-rc01 כוללת את ההצהרות האלה.

תיקוני באגים

  • מתזמן התהליך משתמש עכשיו בממשקי API משופרים כדי לקבוע את שם התהליך. האפשרות הזו שימושית לתמיכה טובה יותר באפליקציות שמשתמשות במספר תהליכים. (aosp/1324732)

גרסה 2.4.0-beta01

20 במאי 2020

התכונות androidx.work:work-gcm:2.4.0-beta01, androidx.work:work-runtime:2.4.0-beta01, androidx.work:work-runtime-ktx:2.4.0-beta01, androidx.work:work-rxjava2:2.4.0-beta01 וגם androidx.work:work-testing:2.4.0-beta01 משוחררות. גרסה 2.4.0-beta01 מכילה את ההצהרות האלה.

תיקוני באגים

  • תוקן באג שבו ה-ForegroundService לא נעצר אחרי שה-Worker בחזית מופסק. (b/155579898, ‏ aosp/1302153)
  • תיקון באג שבו WorkManager מנסה להריץ כמה מכונות של Worker שמקושרות לשירות בחזית (b/156310133, ‏ aosp/1309853)
  • הוספנו תמיכה בהוספה דינמית של מפעלים להענקת גישה, כשמשתמשים ב-DelegatingWorkerFactory. (b/156289105, ‏ aosp/1309745)
  • התאמת המעקב של אילוצים של BATTERY_NOT_LOW לפלטפורמה. (aosp/1312583)

גרסה 2.4.0-alpha03

29 באפריל 2020

androidx.work:work-*:2.4.0-alpha03 משוחרר. גרסה 2.4.0-alpha03 מכילה את ההצהרות האלה.

תכונות חדשות

  • עכשיו יש תמיכה ב-RxJava 3 ב-WorkManager. כדי להשתמש ב-RxJava 3, צריך לכלול את התלות הבאה: implementation "androidx.work:work-rxjava3:2.4.0-alpha03". (aosp/1277904)
  • הוספנו כלל איתור שגיאות חדש שמבטיח שהטמעות של ListenableWorker הן עכשיו public כשמשתמשים ב-WorkerFactory שמוגדרת כברירת מחדל. (aosp/1291262)

שינויים ב-API

  • קריאה ל-setProgressAsync() אחרי שהפעולה ListenableWorker מסתיימת תגרום ליצירת אירוע Exception דרך ListenableFuture. (aosp/1285494)
  • WorkQuery.Builder מסומן עכשיו כ-final. (aosp/1275037)
  • השמות של שיטות המפעל WorkQuery.BuilderwithStates,‏ withTags ו-withUniqueWorkNames השתנו ל-fromStates,‏ fromTags ו-fromUniqueWorkNames, בהתאמה. (aosp/1280287)

תיקוני באגים

  • התעלמות מ-SecurityExceptions במהלך המעקב אחרי מצב הרשת של מכשיר. (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. האפשרות הזו שימושית למפתחים שרוצים לשלוח שאילתות ל-WorkInfo לפי שילוב של כמה מאפיינים. מידע נוסף זמין במאמרים WorkQuery.Builder withStates(...), WorkQuery.Builder withTags(...) או WorkQuery.Builder withUniqueWorkNames(...). (aosp/1253230, ‏ b/143847546)

  • קריאות ל-setForegroundAsync() שלא מסתיימות לפני השלמת ListenableWorker יקבלו עכשיו אות באמצעות IllegalStateException ב-ListenableFuture המוחזר. (aosp/1262743)

תיקוני באגים

  • תוקן כלל האיתור של שגיאות בקוד (lint) שבודק משכי זמן לא חוקיים של מרווחי זמן ל-PeriodicWorkRequest. (aosp/1254846, ‏ b/152606442)

גרסה 2.4.0-alpha01

4 במרץ 2020

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

תכונות חדשות

  • מעכשיו התזמון בתוך התהליך של WorkManager יעיל יותר. בעבר, מתזמן התהליך היה מתייחס רק לביצוע משימות שלא הושעו ושהתקיימו בהן האילוצים. עכשיו מתבצע מעקב אחרי משימות WorkRequest שעשויות להתבצע בעתיד, כולל משימות PeriodicWorkRequest, על ידי מתזמן התהליך. בנוסף, התזמון בתהליך לא פועל לפי מגבלות התזמון (אבל עדיין מוגבל לגודל של Executor שבו משתמש WorkManager). המשמעות היא שהאפליקציה יכולה עכשיו לבצע הרבה יותר קריאות ל-WorkRequest כשהיא בחזית. (aosp/1185778)

  • נוספה היכולת לבקש מ-WorkManager פרטי אבחון באמצעות adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>". המידע הזה כולל הרבה פרטים שימושיים, כולל:

    • בקשות תמיכה שהושלמו ב-24 השעות האחרונות.
    • בקשות WorkRequest שפועלות כרגע.
    • בקשות עבודה מתוזמנות. (aosp/1235501)
  • כללי Lint חדשים לאכיפה של:

    • שימוש ב-foregroundServiceType הנכון כשמשתמשים בממשקי API של setForegroundAsync(). (b/147873061, ‏ aosp/1215915)
    • ציון מזהי JobScheduler ש-WorkManager צריך להשתמש בהם כשמשתמשים ישירות בממשקי ה-API של JobService. (aosp/1223567)

שינויים ב-API

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

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

תיקוני באגים

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

גרסה 2.3.4

גרסה 2.3.4

18 במרץ 2020

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

תיקוני באגים

  • תוקן באג שגרם להפעלה של כמה מכונות של 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)
  • שיפור ניהול מחזור החיים של שירותים שפועלים בחזית (foreground) ל-Workers שפועלים לאורך זמן. (aosp/1226295)
  • שיפור הניהול של ביטול התראות ל-Workers שמריצים משימות ממושכות לאחר ביטול ה-Worker. (aosp/1228346)

גרסה 2.3.1

גרסה 2.3.1

5 בפברואר 2020

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

תיקוני באגים

  • ניהול יעיל יותר של מחזור החיים של Notification ל-Worker לטווח ארוך שפועלים כש-Service בחזית פעיל. (aosp/1218539, ‏ b/147249312)
  • עכשיו WorkManager תלוי ב-androidx.sqlite:sqlite-framework:2.1.0 stable. (aosp/1217729)
  • נוספו כללי איתור שגיאות בקוד כדי לוודא ש-foregroundServiceType מצוין ב-AndroidManifest.xml כשמשתמשים ב-foregroundServiceType ב-ForegroundInfo. (aosp/1214207, ‏ b/147873061)

גרסה 2.3.0

גרסה 2.3.0

22 בינואר 2020

androidx.work:work-*:2.3.0 פורסם ללא שינויים מאז 2.3.0-rc01. גרסה 2.3.0 כוללת את השמירות האלה.

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

  • תמיכה בעבודה ארוכה או חשובה באמצעות ListenableWorker#setForegroundAsync().
  • תמיכה ב'התקדמות העובדים' דרך ListenableWorker#setProgressAsync().
  • עכשיו, WorkManager כולל חבילה של כללי איתור שגיאות נוספים כחלק מהספרייה, שבעזרתה אפשר לזהות באגים בשלב מוקדם.

גרסה 2.3.0-rc01

8 בינואר 2020

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

הגרסה הזו זהה לגרסה 2.3.0-beta02

תיקוני באגים

  • הארטיפקט work-testing מגדיר עכשיו תלות של api ב-work-runtime-ktx. (aosp/1194410)

גרסה 2.3.0-beta02

18 בדצמבר 2019

androidx.work:work-*:2.3.0-beta02 משוחרר. גרסה 2.3.0-beta02 כוללת את ההצהרות האלה.

תכונות חדשות

  • הוספנו הודעת שגיאה טובה יותר לחריגות SQLite שלא ניתן לשחזר. (aosp/1185777)
  • נוספ כלל איתור שגיאות בקוד (lint) שמבטיח שספק התוכן androidx.work.impl.WorkManagerInitializer יוסר מה-AndroidManifest.xml כשמשתמשים בהפעלה על פי דרישה. (aosp/1167007)
  • נוספה אזהרה על שגיאות בקוד כשמשתמשים ב-enqueue() ל-PeriodicWorkRequest במקום ב-enqueueUniquePeriodicWork(). (aosp/1166032)

שינויים ב-API

  • עכשיו צריך לציין את notificationId לשימוש ב-ListenableWorker.setForegroundAsync() ב-ForegroundInfo. זהו שינוי שעלול לגרום לכשל. כך אפשר להריץ כמה משימות Worker ממושכות במקביל. WorkManager גם מנהלת טוב יותר את משך החיים של ה-Notification שסופקו. (b/145473554, ‏ aosp/1181208, ‏ asop/1181216, ‏ asop/1183577)

תיקוני באגים

  • תוקן באג בהטמעה של AlarmManager, שבו ההתראות לא נמחקו כראוי. (aosp/1156444)
  • תוקן באג שבו רשימה ריקה של 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 הזה מאפשר לבטל בקלות רבה במיוחד WorkRequests מ-Notifications. אנחנו צופים שהתכונה הזו תוצג בשילוב עם ממשקי ה-API החדשים לחזית במהדורה 2.3.0.
  • עכשיו WorkManager תלוי ב-androidx.room:*:2.2.0 stable.

שינויים ב-API

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

תיקוני באגים

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

גרסה 2.3.0-alpha02

9 באוקטובר 2019

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

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

  • כשמספר ה-WorkRequest שנמצאים בתור מתקרב למגבלות התזמון, WorkManager מתזמן את העבודה בצורה הוגנת. (aosp/1105766)
  • WorkManager קורא ל-ListenableWorker#onStopped() רק אם העבודה עדיין לא הושלמה. (b/140055777)
  • עכשיו, WorkManager מסיר את פרטי ההתקדמות כשעובד מופרע או מגיע למצב סופי. (aosp/1114572)
  • עכשיו יש ל-Data ייצוג toString()שימושי הרבה יותר. (b/140945323)
  • ל-Data יש עכשיו שיטה טובה יותר של equals(). הוא תומך גם ב-deepEquals לסוגים של Array. (b/140922528)
  • עכשיו, WorkManager שומר את מסד הנתונים הפנימי ואת קובצי ההעדפות שלו בספרייה ללא גיבוי. (b/114808216)

גרסה 2.3.0-alpha01

22 באוגוסט 2019

androidx.work:work-*:2.3.September 5, 20190-alpha01 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

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

גרסה 2.2.0

גרסה 2.2.0

15 באוגוסט 2019

androidx.work:work-*:2.2.0 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

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

שינויים חשובים בגרסה 2.2.0 בהשוואה לגרסה 2.1.0

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

גרסה 2.2.0-rc01

30 ביולי 2019

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

תיקוני באגים

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

גרסה 2.2.0-beta02

19 ביולי 2019

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

תיקוני באגים

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

גרסה 2.2.0-beta01

17 ביולי 2019

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

תכונות חדשות

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

תיקוני באגים

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

גרסה 2.1.0

גרסה 2.1.0

11 ביולי 2019

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

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

  • מעכשיו צריך להשתמש ב-Java 8 כדי להריץ את work-runtime-ktx. אם נתקלתם בבעיות, תוכלו להוסיף את הפרטים הבאים ל-build.gradle: kotlinOptions { jvmTarget = "1.8" }
  • הוספנו את ההפעלה על פי דרישה ל-WorkManager, שתצור את WorkManager רק כשמתבצעת הפניה אליו. b/127497100 כדי להגדיר את הפרויקט לצורך אתחול על פי דרישה:
    1. משביתים את המפעיל האוטומטי.
    2. מטמיעים את Configuration.Provider באובייקט Application המותאם אישית.
    3. משנים את כל ההפניות ל-WorkManager.getInstance() ל-WorkManager.getInstance(Context). כחלק מהשינוי, הוצאנו משימוש את WorkManager.getInstance(). תמיד בטוח יותר להפעיל את החלופה החדשה של WorkManager.getInstance(Context), גם אם לא מבצעים אתחול על פי דרישה.
  • עכשיו יש תמיכה ב-PeriodicWorkRequest לעיכובים ראשוניים. אפשר להשתמש ב-method ‏setInitialDelay ב-PeriodicWorkRequest.Builder כדי להגדיר עיכוב ראשוני. b/111404867
  • נוספה האפשרות להעניק גישה ל-WorkerFactory רשום אחד או יותר באמצעות DelegatingWorkerFactory. b/131435993
  • נוספה האפשרות להתאים אישית את Executor שבו משתמש WorkManager לכל החשבונות הפנימיים שלו באמצעות Configuration.Builder.setTaskExecutor.
  • הוספנו את היכולת ליצור כיתות Worker ו-ListenableWorker שניתנות לבדיקה באמצעות TestWorkerBuilder ו-TestListenableWorkerBuilder ב-artifact‏ work-testing.
    • שימו לב ש-work-testing מושך עכשיו את Kotlin כיחס תלות וכולל כמה תוספים של Kotlin כברירת מחדל.
  • מספר הניסיונות להרצה נוסף ל-WorkInfo. b/127290461
  • עכשיו אפשר לאחסן ולשלוף בייטים ומערכות של בייטים ב-Data. הפעולה הזו לא משנה את הגודל המקסימלי של אובייקטים מסוג Data.
  • עכשיו WorkManager תלוי ב-Room 2.1.0, ובעקבות זאת אמורות להיפתר כמה בעיות במסד הנתונים.

גרסה 2.1.0-rc01

27 ביוני 2019

androidx.work:work-*:2.1.0-rc01 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תיקוני באגים

  • תוקן באג שגרם לאפליקציה לקרוס כשמריצים משימות עם JobScheduler בזמן שבו מתבצע גיבוי b/135858602.

גרסה 2.1.0-beta02

20 ביוני 2019

androidx.work:work-*:2.1.0-beta02 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תיקוני באגים

  • TestListenableWorkerBuilder משתמש עכשיו ב-WorkerFactory הנכון כשיוצר מכונות של ListenableWorker. b/135275844
  • תוקן באג שגרם לתנודות בחלונות הביצוע של WorkRequests עקב מוות של תהליך. b/135272196

גרסה 2.1.0-beta01

13 ביוני 2019

androidx.work:work-*:2.1.0-beta01 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תיקוני באגים

  • עכשיו WorkManager תלוי ב-Room 2.1.0, ובעקבות זאת אמורות להיפתר כמה בעיות במסד הנתונים.
  • הוסרו פעולות קלט/פלט מסוימות של דיסק ההפעלה בשרשור הראשי.
  • תוקנה נעילה מרובת משתמשים פוטנציאלית במעקב אחר אילוצים. b/134361006
  • ביטול מראש של משימות לא חוקיות שמשויכות ל-WorkManager. b/134058261
  • הוספנו כמה קריאות הגנה לממשקי ה-API של JobScheduler למכשירים שמתנהגים בצורה לא תקינה.

גרסה 2.1.0-alpha03

5 ביוני 2019

androidx.work:*:2.1.0-alpha03 משוחרר.

תיקוני באגים

  • מסמכי תיעוד משופרים ל-PeriodicWorkRequest.
  • WorkManagerTestInitHelper משתמש עכשיו במבצע הרקע הנכון לבדיקות.
  • תיקונים לבעיות ב-SQLite כשמתמודדים עם עסקאות גדולות במכשירים מסוימים. (b/130182503)
  • יחסי התלות של WorkManager מפורטים יותר עכשיו. (b/133169148).
  • פתרון לבאגים ספציפיים ל-OEM בהטמעה של JobScheduler כשמתזמנים משימות באמצעות WorkManager.
  • שיפורים בלוח הזמנים שמבוסס על AlarmManager לגבי משכי החיים של שירותים, שגרמו בעבר לקריסות נדירות. (b/133313734)

גרסה 2.1.0-alpha02

16 במאי 2019

גרסה 2.1.0-alpha02 של WorkManager זמינה. הגרסה הזו כוללת כמה ממשקי API חדשים.

שינויים ב-API

  • עכשיו יש תמיכה ב-PeriodicWorkRequest לעיכובים ראשוניים. אפשר להשתמש ב-method ‏setInitialDelay ב-PeriodicWorkRequest.Builder כדי להגדיר עיכוב ראשוני. b/111404867

  • נוספה האפשרות להעניק גישה ל-WorkerFactory רשום אחד או יותר באמצעות DelegatingWorkerFactory. b/131435993

  • נוספה האפשרות להתאים אישית את Executor שבו משתמש WorkManager לכל החשבונות הפנימיים שלו באמצעות Configuration.Builder.setTaskExecutor.

  • מסמכי תיעוד משופרים לגבי WorkRequest.keepResultsForAtLeast (b/130638001), טעינה ראשונית על פי דרישה ו-PeriodicWorkRequest.Builder (b/131711394).

גרסה 2.1.0-alpha01

24 באפריל 2019

גרסה 2.1.0-alpha01 של WorkManager זמינה. הגרסה הזו כוללת כמה ממשקי API חדשים. חשוב לדעת: החל מהגרסה הזו, יהיו תכונות חדשות שלא יועברו לגרסה 1.x. מומלץ לעבור לגרסה 2.x.

שינויים ב-API

  • הוספנו את ההפעלה על פי דרישה ל-WorkManager, שתצור את WorkManager רק כשמתבצעת הפניה אליו. b/127497100 כדי להגדיר את הפרויקט לצורך אתחול על פי דרישה:
    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

גרסה 2.0.1 של WorkManager זמינה. הגרסה הזו זהה ל-2.0.1-rc01.

גרסה 2.0.1-rc01

3 באפריל 2019

הגרסה WorkManager 2.0.1-rc01 זמינה. הגרסה הזו כוללת כמה תיקוני באגים. משתמשים בגרסאות קודמות של 1.x יראו חלק מהשינויים האלה גם ב-1.0.1-rc01.

תיקוני באגים

  • בדיקות Robolectric פועלות עכשיו כמו שצריך עם WorkManager. b/122553577
  • תוקנה קריסה קיצונית שבה לא בוצע ניקוי של מעקב אחר אילוצים בממשקי API מדור קודם של JobScheduler. b/129226383
  • תוקן באג ב-StackOverflowError שקשור לרשימות ארוכות של משימות. b/129091233
  • עדכנו את המסמכים של PeriodicWorkRequests כדי לציין שאין תמיכה בזמן גמישות ב-API 23.
  • תוקנו קישורים שבורים במסמכי התיעוד של Kotlin.

גרסה 2.0.0

גרסה 2.0.0

20 במרץ 2019

גרסה 2.0.0 של WorkManager זמינה. הגרסה הזו זהה ל-2.0.0-rc01, והיא גרסת AndroidX של 1.0.0 יציבה עם יחסי תלות של AndroidX. מומלץ לטרגט את הגרסה הזו במקום את הגרסאות הקודמות 1.x. כל הפיתוח הפעיל יתמקד בגרסה 2.x, וגרסה 1.x תקבל תיקוני באגים קריטיים בלבד למשך זמן מוגבל.

גרסה 2.0.0-rc01

7 במרץ 2019

השקנו את WorkManager 2.0.0-rc01. הגרסה הזו זהה לגרסת 1.0.0 היציבה, אבל יש לה יחסי תלות ב-AndroidX. כשהגרסה הזו תגיע ליציבות בגרסה 2.0.0, כדאי לכלול את הגרסה הזו, ובגרסאות הקודמות 1.x יתקבלו רק תיקוני באגים קריטיים. כל הפיתוח הפעיל יתמקד בגרסה 2.x.

יחסי תלות מהתקופה שלפני AndroidX

מידע נוסף על שימוש בהרחבות של Kotlin זמין במסמכי התיעוד של KTX.
מסמכי עזר: Java
GroovyKotlin
dependencies {
    def work_version = "1.0.1"

    // (Java only)
    implementation "android.arch.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "android.arch.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "android.arch.work:work-rxjava2:$work_version"
    // optional - Test helpers
    androidTestImplementation "android.arch.work:work-testing:$work_version"
}
dependencies {
    val work_version = "1.0.1"

    // (Java only)
    implementation("android.arch.work:work-runtime:$work_version")

    // Kotlin + coroutines
    implementation("android.arch.work:work-runtime-ktx:$work_version")

    // optional - RxJava2 support
    implementation("android.arch.work:work-rxjava2:$work_version")

    // optional - Test helpers
    androidTestImplementation("android.arch.work:work-testing:$work_version")
}

גרסה 1.0.1

גרסה 1.0.1

9 באפריל 2019

גרסה 1.0.1 של WorkManager זמינה. הגרסה הזו זהה ל-1.0.1-rc01.

לתשומת ליבכם: אנחנו ממליצים מאוד למשתמשים לעדכן ל-WorkManager 2.x, כי מעכשיו והלאה יהיו מעט מאוד עדכונים להסתעפויות 1.x. בנוסף, לא יפורסמו ממשקי API חדשים לספרייה בגרסה 1.x.

גרסה 1.0.1-rc01

2 באפריל 2019

השקנו את WorkManager 1.0.1-rc01. הגרסה הזו כוללת כמה תיקוני באגים.

תיקוני באגים

  • בדיקות Robolectric פועלות עכשיו כמו שצריך עם WorkManager. b/122553577
  • תוקנה קריסה קיצונית שבה לא בוצע ניקוי של מעקב אחר אילוצים בממשקי API מדור קודם של JobScheduler. b/129226383
  • תוקן באג ב-StackOverflowError שקשור לרשימות ארוכות של משימות. b/129091233

גרסה 1.0.0

גרסה 1.0.0

5 במרץ 2019

זוהי הגרסה היציבה 1.0.0 של WorkManager. הגרסה הזו של WorkManager זהה לגרסה 1.0.0-rc02.

גרסה 1.0.0-rc02

21 בפברואר 2019

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

תיקוני באגים

  • עכשיו Worker מתוזמנים בצורה נכונה אחרי קריסה של אפליקציה. b/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 22) ומטה. זוהי המשך לתיקון שפורסם ב-1.0.0-beta02. b/121345393
  • הוספנו את הערה exported=false לרכיבים מסוימים במניפסט שלנו שלא הכילו את ההערה הזו.
  • מידע על האינטראקציה של WorkManager עם מערכת ההפעלה מופיע במסמכים ברמת החבילה.

גרסה 1.0.0-beta02

15 בינואר 2019

הגרסה הזו כוללת כמה תיקוני באגים.

תיקוני באגים

  • תוקן מקרה קיצון שבו עבודה תקופתית עשויה לפעול יותר מפעם אחת בכל מרווח זמן במכשירים עם Android 6.0 (רמת API‏ 23). b/121998363
  • תוקנה בעיה ב-ConcurrentModificationException במכשירים עם Android 5.1 (API ברמה 22) ומטה. b/121345393
  • תוקן ביצוע שגוי של משימות כשהאילוצים לא מתקיימים במכשירים עם Android 5.1 (רמת API 22) ומטה. b/122578012
  • טיפול משופר בהשלמת משימות כדי שהן יסתיימו מהר יותר במקרים קיצוניים מסוימים. b/122358129
  • נוספה שינוי כדי לטפל בתנאים פוטנציאליים של תחרות בין כמה מופעים של LiveData שבהם WorkManager משתמש.
  • עברנו להשתמש ב-Room יחסי התלות 1.1.1 במקום 1.1.1-rc01. הגרסאות האלה זהות. b/122578011

גרסה 1.0.0-beta01

19 בדצמבר 2018

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

תיקוני באגים

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

גרסה 1.0.0-alpha13

12 בדצמבר 2018

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

שינויים ב-API

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

שינויים ב-API שמשפיעים על הקוד

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

גרסה 1.0.0-alpha12

5 בדצמבר 2018

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

שינויים ב-API

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

תיקוני באגים

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

שינויים ב-API שמשפיעים על הקוד

  • הסרנו את התמיכה ב-Firebase JobDispatcher כי בקרוב הוא יווצא משימוש. המשמעות היא שהארטיפקט work-firebase לא יתעדכן יותר לקראת גרסת הבטא. נבדוק אפשרות להוסיף חלופה בעתיד.
  • השילוב של Payload ב-Result. Result היא עכשיו 'כיתה אטומה' עם שלוש הטמעות קונקרטיות, שאפשר לקבל באמצעות Result.success() (או Result.success(Data)), Result.failure() (או Result.failure(Data)) ו-Result.retry(). עכשיו הערך של ListenableFuture הוא Result במקום Payload. ל-Workers אין שיטות getter ו-setter לפלט Data.
  • נוספו שיטות ההרחבה Operation.await() ו-ListenableFuture.await() ב-Kotlin.
  • השם של Operation.getException() השתנה ל-Operation.getThrowable().
  • הכיתה ContentUriTriggers והשיטות שמפנות אליה כבר לא זמינות לשימוש ציבורי.
  • הסרנו את שאר השיטות של varargs ב-WorkManager, ב-WorkContinuation וב-OneTimeWorkRequest כדי לייעל את ה-API. כדי לפתור בעיות ב-build, אפשר לעטוף את הפרמטרים הבלתי מוגדרים הקיימים ב-Arrays.asList(...). אנחנו עדיין כוללים גרסאות עם ארגומנטים יחידים של כל שיטה.
  • WorkContinuation.combine(OneTimeWorkRequest, *) וריאציות הוסרו. הם הציגו ממשק API מבולגן. השיטות הקיימות של combine מובנות יותר.

גרסה 1.0.0-alpha11

8 בנובמבר 2018

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

שינויים ב-API

  • work-runtime-ktx מציג CoroutineWorker חדש.
  • השם של WorkStatus השתנה ל-WorkInfo. כל הווריאנטים התואמים של שיטת getStatus שונו לשמות התואמים של הווריאנטים של getWorkInfo. זהו שינוי שעלול לגרום לכשל.
  • ListenableWorker.onStopped() לא מקבל יותר ארגומנט בוליאני שמייצג אם ה-WorkRequest בוטל. WorkManager כבר לא מבדיל בין שתי האפשרויות האלה. זהו שינוי שעלול לגרום לכשל.
  • השם של החבילה androidx.work.test השתנה לחבילה androidx.work.testing. זהו שינוי שעלול לגרום לכשל.
  • ה-setters ב-Constraints כבר לא חלק מה-API הציבורי. זהו שינוי שעלול לגרום לכשל.
  • המערכים WorkerParameters.getTriggeredContentUris() ו-WorkerParameters.getTriggeredContentAuthorities() שהוחזרו בעבר. עכשיו השיטות האלה מחזירות אוספים. זהו שינוי שעלול לגרום לכשל.
  • השם של ListenableWorker.onStartWork() השתנה ל-ListenableWorker.startWork(). זהו שינוי שעלול לגרום לכשל.
  • ה-constructor של WorkStatus כבר לא חלק מה-API הציבורי. זהו שינוי שעלול לגרום לכשל.
  • השם של Configuration.getMaxJobSchedulerID() ו-Configuration.getMinJobSchedulerID() ישתנה ל-Configuration.getMinJobSchedulerId() ול-Configuration.getMaxJobSchedulerId(), בהתאמה. זהו שינוי שעלול לגרום לכשל.
  • הוספנו הרבה הערות @NonNull ל-API הציבורי כדי לשפר את הארגונומיה של ה-API.
  • הוספת API של WorkManager.enqueueUniqueWork() כדי להוסיף לתור OneTimeWorkRequest ייחודיים בלי צורך ליצור WorkContinuation.
  • כל הווריאציות של השיטות enqueue ו-cancel ב-WorkManager מחזירות עכשיו סוג Operation חדש. זהו שינוי שעלול לגרום לכשל.
  • כל הווריאנטים של enqueue לא מקבלים יותר פרמטרים ניתנים לשינוי (varargs) עבור WorkRequest. זהו שינוי שעלול לגרום לכשל. במקום זאת, אפשר להשתמש באוספים. אפשר להשתמש ב-Arrays.asList() כדי לשנות קוד קיים. עשינו זאת כדי לצמצם את שטח ה-API ואת מספר השיטות.
  • ניסיון לבצע initialize WorkManager יותר מפעם אחת לכל תהליך יוביל עכשיו ל-IllegalStateException. זהו שינוי שעלול לגרום לכשל.

תיקוני באגים

  • עכשיו נעשה שימוש ב-ListenableWorker ב-WorkRequest.Builder שבארטיפקט work-runtime-ktx. תיקון של b/117666259
  • מוודאים שזמן הריצה הבא של PeriodicWork הוא בעתיד. תיקונים של b/118204399
  • הסרת פעולות קלט/פלט פוטנציאליות בדיסק כשמשתמשים ב-WorkManager בזמן הפעלת האפליקציה. תיקון הבאג b/117796731
  • תיקון של מרוץ תהליכים ב-WorkConstraintsTracker. תיקון הבעיה android-workmanager/issues/56

שינויים ב-API שמשפיעים על הקוד

  • השם של WorkStatus השתנה ל-WorkInfo. כל הווריאנטים התואמים של שיטת getStatus שונו לשמות התואמים של הווריאנטים של getWorkInfo.
  • ListenableWorker.onStopped() לא מקבל יותר ארגומנט בוליאני שמייצג אם ה-WorkRequest בוטל. WorkManager כבר לא מבדיל בין שתי האפשרויות האלה.
  • השם של החבילה androidx.work.test השתנה לחבילה androidx.work.testing.
  • ה-setters ב-Constraints כבר לא חלק מה-API הציבורי.
  • המערכים WorkerParameters.getTriggeredContentUris() ו-WorkerParameters.getTriggeredContentAuthorities() שהוחזרו בעבר. עכשיו השיטות האלה מחזירות אוספים.
  • השם של ListenableWorker.onStartWork() השתנה ל-ListenableWorker.startWork().
  • ה-constructor של WorkStatus כבר לא חלק מה-API הציבורי.
  • השם של Configuration.getMaxJobSchedulerID() ו-Configuration.getMinJobSchedulerID() ישתנה ל-Configuration.getMinJobSchedulerId() ול-Configuration.getMaxJobSchedulerId(), בהתאמה.
  • כל הווריאציות של השיטות enqueue ו-cancel ב-WorkManager מחזירות עכשיו סוג חדש של Operation.
  • כל הווריאנטים של enqueue לא מקבלים יותר פרמטרים ניתנים לשינוי (varargs) עבור WorkRequest.
  • ניסיון לבצע initialize WorkManager יותר מפעם אחת לכל תהליך יוביל עכשיו ל-IllegalStateException.

גרסה 1.0.0-alpha10

11 באוקטובר 2018

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

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

שינויים ב-API

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

תיקוני באגים

  • תוקנה הבעיה המוכרת מ-alpha09 לגבי קבצים כפולים מסוג androidx-annotations.pro. כדי להסיר את הפתרון החלופי מההערות לגרסה הקודמת, מוחקים את exclude 'META-INF/proguard/androidx-annotations.pro' מקובץ ה-gradle.
  • נוספו הגדרות של ProGuard כדי לשמור על המבנה החדש של ה-constructor של Worker. b/116296569
  • תיקון של NullPointerException פוטנציאלי במצב מרוץ שבו העבודה REPLACEה. b/116253486 ו-b/116677275
  • עכשיו אפשר להזין ב-WorkContinuation.combine() ערך WorkContinuation אחד או יותר במקום שניים או יותר. b/117266752

שינויים ב-API שמשפיעים על הקוד

  • הוסרו כל השיטות והכיתות הקודמות של deprecated, במיוחד ה-constructor Worker שמוגדר כברירת מחדל.
  • הממשק WorkerFactory וההטמעה הקונקרטית DefaultWorkerFactory מוזגו לכיתה מופשטת שנקראת WorkerFactory.
  • WorkManager.synchronous() ו-WorkContinuation.synchronous() הוסרו.
  • השיטות WorkManager.getStatus*() מחזירות עכשיו ListenableFuture. WorkManager.getStatus*LiveData() מחזיר LiveData.

גרסה 1.0.0-alpha09

19 בספטמבר 2018

בעיה ידועה

אם נתקלת בבעיה הבאה: "More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'", עליך להוסיף את הטקסט הבא לקובץ ה-gradle כפתרון זמני בזמן שאנחנו פותרים את הבעיה ב-alpha10:

GroovyKotlin
android {
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}
android {
    packagingOptions {
        exclude("META-INF/proguard/androidx-annotations.pro")
    }
}

תיקוני באגים

  • הוספנו תיקון נוסף שנחוץ לשגיאה '100 משימות'. b/115560696
  • הוספנו כמה תיקונים לשגיאות באילוצים של מפתחות זרים שנובעות מתנאי מרוץ (race condition). b/114705286
  • ConstraintTrackingWorker.onStopped(boolean) שהוקצה מבצע קריאה ל-Worker הבסיסי. b/114125093
  • אכיפת עיכוב מינימלי תקין של זמן ההשהיה לניסיון חוזר ב-Firebase JobDispatcher. b/113304626
  • שיפורים בשרשור מבטיחים עבודה פנימית בספרייה.
  • תיקון בעיה פוטנציאלית עם הסרת כפילויות של LiveData באופן פנימי.

שינויים ב-API

  • עכשיו אפשר ליצור מכונות Worker משלכם בזמן הריצה על ידי ציון WorkerFactory כחלק מ-WorkManager.Configuration. המפעל החלופי הוא DefaultWorkerFactory, והוא תואם להתנהגות של גרסאות קודמות של WorkManager.
    • ה-constructors שמוגדרים כברירת מחדל ל-Worker ול-NonBlockingWorker מסומנים עכשיו כמיושנים. יש להשתמש ב-constructor החדש (Worker(Context, WorkerParameters)) ולקרוא ל-super(Context, WorkerParameters). בגרסאות עתידיות של WorkManager, ה-constructor שמוגדר כברירת מחדל יוסר.
  • התחלנו להשתמש באופן פנימי ב-artifact החדש של ListenableFuture (ללא יחסי תלות ב-Guava). נוסיף את ListenableFutures ל-API בגרסאות הבאות. השינוי הזה יאפשר לבטל את ההסתרה של NonBlockingWorker בעתיד.
  • הוספנו את היכולת להפעיל משימות מתוזמנות ב-TestDriver באמצעות TestDriver.setInitialDelayMet(UUID) ו-TestDriver.setPeriodDelayMet(UUID). b/113360060

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

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

גרסה 1.0.0-alpha08

27 באוגוסט 2018

תיקוני באגים

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

גרסה 1.0.0-alpha07

16 באוגוסט 2018

תיקוני באגים

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

שינויים ב-API

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

גרסה 1.0.0-alpha06

1 באוגוסט 2018

תיקוני באגים

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

גרסה 1.0.0-alpha05

24 ביולי 2018

שינויים ב-API

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

תיקוני באגים

  • WorkManager כבר לא מבצע משימות במקרים ידועים של גיבוי אוטומטי. כתוצאה מכך, יכול להיות שהמערכת קרסה. b/110564377
  • תוקנה בעיה של תזמון כפול של PeriodicWorkRequests כשמשתמשים ב-JobScheduler. b/110798652
  • תוקנה בעיה שבה PeriodicWorkRequest לא פועלים כראוי אחרי מצב שינה של המכשיר. b/111469837
  • תוקנה בעיה עם עיכובים ראשוניים בשימוש ב-Firebase JobDispatcher. b/111141023
  • תוקנו כמה בעיות שקשורות לתנאי מרוץ ולתזמון.
  • המערכת שחררה בצורה נכונה BroadcastReceiver שכבר לא היו דרושים.
  • אופטימיזציה של ביצועי תזמון מחדש כשאפליקציות מופעלות מחדש אחרי סגירה בכוח.
  • מותר להפעיל את TestScheduler.setAllConstraintsMet(UUID) לפני או אחרי הוספת WorkRequest הנתון לתור. b/111238024

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

  • עכשיו המחיר של WorkManager.getInstance() הוא @NonNull במקום @Nullable.
  • שינינו את החתימה של Data.getString() כך שהיא כבר לא מקבלת ערך ברירת מחדל (היא null באופן משתמע).
  • סימנו את השיטות שדרושות רק לשימוש פנימי בתווית @hide. כולל את המבנה Constraints, את Data.toByteArray() ואת Data.fromByteArray(byte[]).

גרסה 1.0.0-alpha04

26 ביוני 2018

תיקוני באגים

  • עכשיו PeriodicWorkRequests מתוזמנים מחדש בצורה נכונה כשמשתמשים בהטמעה שמבוססת על AlarmManager.
  • תוקנה בעיה פוטנציאלית של ANR כשמגדירים מחדש את כל העובדים אחרי עצירה בכוח או הפעלה מחדש. b/110507716
  • הוספנו הערות לגבי יכולת האפסיות לממשקי API שונים של WorkManager. b/110344065
  • תיעוד ביומן של חריגות שלא זוהו שקורות במהלך ביצוע של Worker. b/109900862
  • העברות מסדי נתונים הרסניות מותרות במקרה שתחליטו לחזור לגרסה ישנה יותר של WorkManager. b/74633270
  • תוקנה קריסה במהלך העברה אם נוצרים תגים מרובים עם משמעות משתמעת. זו בעיה נדירה מאוד שמתרחשת רק אם השתמשתם בעצמכם באותו פורמט של תג סמוי.

גרסה 1.0.0-alpha03

19 ביוני 2018

תיקוני באגים

  • תוקנה בעיה של מרוץ תהליכים בהטמעה שמבוססת על AlarmManager. b/80346526.

  • תוקנו משימות כפולות שנוצרו כשמשתמשים ב-JobScheduler אחרי הפעלה מחדש של המכשיר.

  • משימות עם טריגרים של URI של תוכן נשמרות עכשיו אחרי הפעלות מחדש. b/80234744

  • עדכונים במסמכי העזרה. b/109827628, ‏ b/109758949, ‏ b/80230748

  • תוקנה קריסה כשWorkRequest מוחזר לתור. b/109572353.

  • תוקנו אזהרות של קובץ הידור Kotlin כשמשתמשים ביחס התלות work-runtime-ktx.

  • WorkManager משתמש עכשיו ב-Room בגרסה 1.1.1-rc1.

שינויים ב-API

  • נוספה getStatusesSync(), הגרסה הסינכרונית של WorkContinuation.getStatuses().
  • ל-Worker יש אפשרות להבדיל בין ביטול ביוזמת המשתמש לבין הפסקה זמנית שביקשה מערכת ההפעלה. הפונקציה Worker.isStopped() מחזירה את הערך true אם נשלחה בקשה להפסקה מסוג כלשהו. הפונקציה Worker.isCancelled() מחזירה את הערך true כשהעבודה בוטלה במפורש. b/79632247
  • הוספת תמיכה ב-JobParameters#getNetwork() ב-API 28. הוא מוצג דרך Worker.getNetwork().
  • הוספנו את Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit) כדי שתוכלו לאכוף את מספר המשימות שאפשר לשלוח אל JobScheduler או אל AlarmManager. כך אפשר למנוע מ-WorkManager להשתמש בכל התקני JobScheduler הזמינים.
  • הוספנו את Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId), שמאפשר להגדיר טווח של מזהי משימות JobScheduler שבטוח לשימוש ב-WorkManager. b/79996760
  • הפונקציה Worker.getRunAttemptCount() מחזירה את מספר ההפעלות הנוכחי של Worker נתון. b/79716516
  • WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) מאפשר להוסיף לתור PeriodicWorkRequests ייחודיים. b/79600647
  • WorkManager.cancelAllWork() מבטל את כל ה-Worker. ספריות שתלויה ב-WorkManager יכולות לבצע שאילתה לגבי מועד הקריאה האחרון של השיטה הזו באמצעות WorkManager.getLastCancelAllTimeMillis() כדי לבצע ניקוי נוסף של המצב הפנימי.
  • הוספנו את WorkManager.pruneWork() כדי להסיר משימות שהושלמו מהמסד הפנימי. b/79950952, ‏ b/109710758

שינויים בהתנהגות

  • נוסף תג משתמע לכל ה-WorkRequest, שהוא שם המחלקה המלא של ה-Worker. כך אפשר להסיר WorkRequests ללא tags או כשה-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() כדי לבצע פעולות ניקוי קלילות.
  • ה-API של Worker.getTags() מחזיר Set של תגים שמשויכים ל-Worker.
  • הוספנו עומסי יתר של javax.time.Duration לממשקי API שמקבלים שילוב של משך זמן ו-TimeUnit. הנתונים האלה מוגנים על ידי @RequiresApi(26).
  • WorkManager תוספים הועברו מחבילה androidx.work.ktx לחבילה androidx.work. התוספים הישנים הוצאו משימוש וייוסרו בגרסה עתידית.
  • האפשרות Configuration.withExecutor() הוצאה משימוש. במקום זאת, אתם צריכים להשתמש ב-Configuration.setExecutor().

גרסה 1.0.0-alpha01

8 במאי 2018

WorkManager מאפשר לתזמן ולבצע בקלות עבודות ברקע עם התחייבות לביצוע, תוך התחשבות באילוצים. הגרסה הראשונית היא 1.0.0-alpha01.