WorkManager

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

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

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

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

Groovy

dependencies {
    def work_version = "2.9.1"

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

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

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

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

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

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

Kotlin

dependencies {
    val work_version = "2.9.1"

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

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

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

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

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

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

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

אפשר לקרוא מידע נוסף על יחסי תלות במאמר הוספת יחסי תלות של build.

משוב

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

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

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

גרסה 2.10

גרסה 2.10.0

30 באוקטובר 2024

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

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

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

גרסה 2.10.0-rc01

24 באוקטובר 2024

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

גרסה 2.10.0-beta01

2 באוקטובר 2024

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

גרסה 2.10.0-alpha04

18 בספטמבר 2024

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

שינויים ב-API

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

גרסה 2.10.0-alpha03

4 בספטמבר 2024

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

תכונות חדשות

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

שינויים ב-API

  • הגרסה של 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) ובכל גרסאות ה-build כשמשתמשים ב-AGP 8.1 ואילך (למשל, D8 גרסה 8.1). ללקוחות שלא משתמשים ב-AGP מומלץ לעדכן לגרסה 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 נוסף כדי לשלוט במרכז ההפצה שבו מתבצע CoroutineWorker. כך אפשר להימנע לחלוטין משימוש ב-Dispatchers.Default ב-WorkManager. (Icd1b7)
  • הוספה של רכיבי handler מותאמים אישית לחריגים ל-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 כוללת את ההוספות האלה.

תיקוני באגים

גרסה

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)
  • נוספה שיטה לתצפית על עובדים באמצעות 'תהליכים' באמצעות שיטות 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 ולהשתמש ב-thread הראשי האמיתי.
  • ממשקי API של Coroutines כמו 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. שימו לב שאם ה-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 הותחל. בנוסף, נוסף ממשק 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 ל-SDKs עתידיים (Iafd82, ‏ b/207528937)
  • הוספה של getForegroundInfo אל Worker. (Ic1ead)
  • נוספו שיטות עזר WorkQuery.fromIds ליצירת WorkQuery ישירות מ-ids. (Ie5bdf, ‏ b/199919736)
  • ל-RxWorker יש עכשיו את setForeground שמחזיר את Completable, שאפשר להשתמש בו במקום setForegroundInfoAsync שמחזיר את ListenableFuture. (I85156)
  • ב-RxWorker ל-RxJava 2 יש עכשיו getForegroundInfo שמחזיר Single שאפשר להשתמש בו במקום getForegroundInfoAsync שמחזיר ListenableFuture. (I21c91, ‏ b/203851459)
  • ב-RxWorker ל-RxJava 3 יש עכשיו getForegroundInfo שמחזיר Single שאפשר להשתמש בו במקום getForegroundInfoAsync שמחזיר ListenableFuture. (I1ca8a)
  • ל-RxWorker יש עכשיו את setForeground שמחזיר את Completable, שאפשר להשתמש בו במקום setForegroundInfoAsync שמחזיר את ListenableFuture. (I992a3, ‏ b/203851459)

תיקוני באגים

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

גרסה 2.7

גרסה 2.7.1

17 בנובמבר 2021

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

תיקוני באגים

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

גרסה

13 באוקטובר 2021

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

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

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

  • כשמשתמשים ב-setExpedited(...), ‏WorkManager מעביר משימות מהירות ל-JobScheduler החל מגרסה 12 של Android, תוך שמירה על תאימות לאחור לגרסאות קודמות של 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 נוסף ממשק API חדשWorkRequest.Builder.setExpedited(...) שמביא בחשבון את ההגבלות על שירותים שפועלים בחזית ב-Android 12.

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

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

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

שינויים ב-API

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

גרסה 2.6.0

גרסה 2.6.0

1 בספטמבר 2021

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

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

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

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

  • נוסף RemoteCoroutineWorker שהוא יישום של RemoteListenableWorker שיכול לבצע קישור לתהליך מרוחק. I30578

גרסה 2.6.0-rc01

4 באוגוסט 2021

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

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

גרסה 2.6.0-beta02

21 ביולי 2021

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

תיקוני באגים

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

גרסה 2.6.0-beta01

2 ביוני 2021

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

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

גרסה 2.6.0-alpha02

21 באפריל 2021

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

תכונות חדשות

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

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

שינויים ב-API

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

גרסה 2.6.0-alpha01

24 במרץ 2021

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

תכונות חדשות

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

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

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

    (או)

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

שינויים ב-API

  • צריך להוסיף API של Result.getOutputData() שמחזיר את ה-outputData של ListenableWorker. (Ie51e3)

תיקוני באגים

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

גרסה 2.5.0

גרסה 2.5.0

27 בינואר, 2021

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

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

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

גרסה 2.5.0-rc01

13 בינואר 2021

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

תיקוני באגים

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

גרסה

גרסה

22 ביולי 2020

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

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

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

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

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

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

  • היכולת להוסיף RunnableScheduler בהתאמה אישית כדי לעקוב אחרי בקשות עבודה שצריך לבצע בעתיד. המשתנה הזה משמש את מתזמן התהליך. (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)

תיקוני באגים

  • כשעוקבים אחרי מצב הרשת של מכשיר, מתעלמים מ-SecurityException. (b/153246136, aosp/1280813)

גרסה 2.4.0-alpha02

1 באפריל 2020

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

תכונות חדשות

  • נוסף כלל חדש של איתור שגיאות בקוד (lint), עם אזהרה כשמחייבים גם Constraints.setRequiresCharging(...) וגם Constraints.setRequiresDeviceIdle(...) בפונקציות WorkRequest. חלק מהמכשירים אף פעם לא נטענים ואינם במצב חוסר פעילות בו-זמנית. לכן, הבקשות האלה יפעלו בתדירות נמוכה מהצפוי. (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 שפועלות כרגע.
    • בקשות 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 שצריך לבצע בעתיד. המשתנה הזה משמש את מתזמן התהליך. (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 כוללת את ההתחייבויות האלה.

תיקוני באגים

  • ניהול יעיל יותר של מחזור החיים של Notifications ל-Workers ארוכי טווח שפועלים כש-Service בחזית פעיל. (aosp/1218539, ‏ b/147249312)
  • WorkManager תלוי עכשיו ביציבות של androidx.sqlite:sqlite-framework:2.1.0. (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)
  • תוקן באג שגרם לבנייה של שרשרת WorkContinuation ריקה עם רשימה ריקה של פרמטרים מסוג WorkRequest. (b/142835274, ‏ aosp/1157051)

שינויים ביחסי התלות

  • ב-WorkManager משתמש עכשיו בחדר 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.

שינויים ב-API

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

תיקוני באגים

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

גרסה 2.3.0-alpha02

9 באוקטובר 2019

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

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

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

גרסה 2.3.0-alpha01

22 באוגוסט 2019

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

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

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

גרסה

גרסה

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 משוחרר. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.

תיקוני באגים

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

תכונות חדשות

  • 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)

גרסה

גרסה

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 באובייקט 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) שכלולות בגרסה הזו.

תיקוני באגים

  • שירות Work Manager תלוי עכשיו בשירות 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 משתמש במנהל הרקע הנכון לבדיקות.
  • תיקונים לבעיות ב-SQLite כשמתמודדים עם עסקאות גדולות במכשירים מסוימים. (b/130182503)
  • עכשיו יחסי התלות של WorkManager מפורטים יותר. (b/133169148).
  • פתרון לבאגים ספציפיים ל-OEM בהטמעה של JobScheduler כשמתזמנים משימות באמצעות WorkManager.
  • שיפורים בתזמון שמבוסס על AlertManager סביב משך החיים של השירות, שגרמו בעבר לקריסות נדירות. (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
  • תיעוד מעודכן ל-PeriodicWorkRequest כדי לציין שהזמן הגמיש לא נתמך ב-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

מגניב

dependencies {
    def work_version = "1.0.1"

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

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

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

Kotlin

dependencies {
    val work_version = "1.0.1"

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

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

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

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

גרסה 1.0.1

גרסה 1.0.1

9 באפריל 2019

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

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

גרסה 1.0.1-rc01

2 באפריל 2019

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

תיקוני באגים

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

גרסה 1.0.0

גרסה 1.0.0

5 במרץ 2019

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

גרסה 1.0.0-rc02

21 בפברואר 2019

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

תיקוני באגים

  • רכיבי Worker מתוזמנים עכשיו בצורה נכונה לאחר קריסה של אפליקציה. b/124546316

  • Workers שמפעילים Exception לא מסומן עכשיו כראוי בתור FAILED והם כבר לא גורמים לקריסה של תהליך האפליקציה.

גרסה 1.0.0-rc01

14 בפברואר 2019

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

תיקוני באגים

  • ההטמעה שמבוססת על AlarmManager מתייחסת עכשיו בצורה נכונה לחלונות flex של בקשות PeriodicWork. b/124274584

גרסה 1.0.0-beta05

6 בפברואר 2019

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

תיקוני באגים

  • תוקנה בעיה שבה נעשה שימוש ב-JobScheduler.getPendingJob(...) ב-API 23. b/123893059
  • תוקן NullPointerException במכשירים עם Android מגרסה 5.1 (רמת API 22) ומטה. b/123835104

גרסה 1.0.0-beta04

4 בפברואר 2019

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

תיקוני באגים

  • תזמון משופר של PeriodicWork להטמעה שמבוססת על AlarmManager.
  • תוקנה בעיה שבה WorkManager לא הצליח לעקוב בצורה נכונה אחרי אילוצים כשמשתמשים בהטמעה שמבוססת על AlarmManager. b/123379508
  • תוקנה הבעיה שגרמה לניסיונות חוזרים של עבודה חוזרת על מוות של תהליך ב-WorkManager באמצעות יישום שמבוסס על AlertManager. 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. בהמשך, פלטפורמת 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.
  • נוספו שיטות ההרחבה 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 לא מקבלים יותר פרמטרים מרובים של WorkRequest. זהו שינוי שעלול לגרום לכשל. במקום זאת, אפשר להשתמש באוספים. אפשר להשתמש ב-Arrays.asList() כדי לשנות קוד קיים. עשינו זאת כדי לצמצם את שטח ה-API ואת מספר השיטות.
  • ניסיון initialize WorkManager יותר מפעם אחת לכל תהליך יוביל עכשיו ל-IllegalStateException. זהו שינוי שעלול לגרום לכשל.

תיקוני באגים

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

הפרות שינויים ב-API

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

גרסה 1.0.0-alpha10

11 באוקטובר 2018

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

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

שינויים ב-API

  • הסרת כל ה-methods והמחלקות deprecated, ובמיוחד את ה-constructor של ברירת המחדל Worker. זהו שינוי תוכנה שעלול לגרום לכשל ב-API.
  • שיניתם את השם של NonBlockingWorker ל-ListenableWorker, וכעת זוהי כיתה ציבורית גלויה ומוכנה לשימוש.
    • ListenableWorker מספק גישה לשיטה מופשטת אחת, ListenableFuture<Payload> onStartWork(), שנקראת בשרשור הראשי. אתם אחראים להתחיל את העבודה ולעבד אותה באופן אסינכרוני. בסיום, צריך לעדכן את ListenableFuture בהתאם. הטמעות עזר של ListenableFutures זמינות בחבילה Futures ב-alpha02 (ראו בהמשך הקטע WorkManager).
    • Worker נרחיב את ListenableWorker ועדיין פועל כמו קודם, באמצעות שיטה מופשטת Result doWork().
    • שינינו את הסדר של חלק מהשיטות והחברים מ-Worker ל-ListenableWorker.
    • בקרוב נשיק הטמעות לדוגמה של ListenableWorkers שמשתמשים ב-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 פוטנציאלי במרוץ תהליכים שבו העבודה REPLACEd. b/116253486 ו-b/116677275
  • עכשיו אפשר להזין ב-WorkContinuation.combine() ערך WorkContinuation אחד או יותר במקום שניים או יותר. b/117266752

שינויים ב-API שמשביתים את הקוד

  • הסרת כל ה-methods והמחלקות deprecated, ובמיוחד את ה-constructor של ברירת המחדל Worker.
  • הממשק WorkerFactory וההטמעה הקונקרטית DefaultWorkerFactory מוזגו לכיתה מופשטת שנקראת WorkerFactory.
  • בוצעה הסרה של WorkManager.synchronous() ושל WorkContinuation.synchronous().
  • באמצעות WorkManager.getStatus*() methods מוחזרות 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:

מגניב

android {
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

Kotlin

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

תיקוני באגים

  • הוספנו תיקון נוסף שנחוץ לשגיאה '100 משימות'. b/115560696
  • הוספנו כמה תיקונים לשגיאות באילוצים של מפתחות זרים שנובעות מתנאי מרוץ (race condition). b/114705286
  • ConstraintTrackingWorker.onStopped(boolean) להענקת גישה מבצעת קריאות ל-Worker הבסיסי. b/114125093
  • אכיפה נכונה של השהיה מינימלית לפני ניסיון חוזר (backoff) ב-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 החדש בהקדם האפשרי. גרסאות עתידיות יסירו את בנאי ברירת המחדל.

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

  • עכשיו הערה של @NonNull מופיעה ב-WorkManager.getInstance() במקום הערה של @Nullable. במקום זאת, אם האובייקט מסוג singleton לא יופעל כראוי במקרים של הפעלה ידנית, השיטה תזרוק 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
  • תוקנה בעיה של תזמון כפול של PeriodicWorkRequests כשמשתמשים ב-JobScheduler. b/110798652
  • תוקנה בעיה שבה PeriodicWorkRequest לא פועלים כראוי אחרי מצב שינה של המכשיר. b/111469837
  • תוקנה בעיה עם עיכובים ראשוניים בשימוש ב-Firebase JobDispatcher. b/111141023
  • תוקנו כמה בעיות שקשורות לתנאי מרוץ ולתזמון.
  • פינית BroadcastReceiver פריטים שלא היה בהם צורך יותר.
  • ביצועים אופטימליים של תזמון מחדש כשאפליקציות מופעלות מחדש לאחר סגירה מאולצת.
  • אישרת את הקריאה אל TestScheduler.setAllConstraintsMet(UUID) לפני או אחרי הכניסה של WorkRequest הנתון לתור. b/111238024

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

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

גרסה 1.0.0-alpha04

26 ביוני 2018

תיקוני באגים

  • 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.