מנהל עבודה

עם WorkManager API אפשר לתזמן בקלות משימות אסינכרוניות ושונות שצריכה לפעול באופן מהימן. ממשקי ה-API האלה מאפשרים ליצור משימה ולהעביר אותה Work Manager שירוץ כשיש עמידה במגבלות העבודה.
העדכון האחרון גרסה יציבה מועמד לפרסום גרסת בטא גרסת אלפא
7 באוגוסט 2024 2.9.1 - - 2.10.0-alpha02

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

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

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

מגניב

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

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

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

גרסה 2.10

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

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

שינויים ב-API

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

תיקוני באגים

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

גרסה 2.9.0-alpha01

7 ביוני 2023

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

תכונות חדשות

  • ניראות (observability) דרך Flow-s. במקום LiveData, אפשר עכשיו לראות את ההתקדמות של ה-Worker באמצעות ה-flows דרך WorkManager.getWorkInfosFlow ושיטות דומות.
  • תזמון מדויק של עובדים תקופתיים דרך setNextScheduleTimeOverride. כך ניתן לחשב באופן דינמי את לוח הזמנים התקופתי הבא לעבודה, שיכול לשמש להטמעת תכונות מתקדמות כמו זמני רענון מותאמים, התנהגות מותאמת אישית של ניסיונות חוזרים או הפעלת קובץ חדשותי בפיד לפני שהמשתמש מתעורר בכל בוקר ללא דריפט. צריך להשתמש בפונקציה ExistingPeriodicWorkPolicy.UPDATE בשיטות האלה כדי להימנע מביטול של עובד שפועל כרגע ולתזמן את התור הבא.
  • הבדיקה של WorkManager בסביבת ייצור תואמת לשרשורים. אפשר להשתמש ב-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)
  • נוספה שיטה לתצפית על עובדים באמצעות 'תהליכים' באמצעות שיטות getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow (If122a)
  • נוספו הערות @RequiresApi(...) שהיו חסרות ל'מגבלות' של מבנים ומאפיינים. הן מיושרות עכשיו להערות תואמות בהגדרות של 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> באמצעות setSchedulingLimitHandler)
  • נוספה האפשרות לספק Consumer<Throwable> דרך setInitializationאפסHandler כדי לקבוע אם היו בעיות במהלך הניסיון לאתחל את 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 לערכות SDK עתידיות (Iafd82, b/207528937)
  • הוספה של getForegroundInfo אל Worker. (Ic1ead)
  • שיטות עזרה WorkQuery.fromIds ליצירת שאילתת WorkQuery ישירות ממזהים נוספו. (Ie5bdf, b/199919736)
  • ב-RxWorker יש עכשיו setForeground שמחזיר Completable אפשר להשתמש בפונקציה setForegroundInfoAsync שמחזירה ListenableFuture (I85156)
  • ב-RxWorker for RxJava 2 יש עכשיו getForegroundInfo שמחזיר Single אפשר להשתמש בפונקציה getForegroundInfoAsync שמחזירה ListenableFuture (I21c91, b/203851459)
  • ב-RxWorker for 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(...), WorkManager מעניק גישה למשימות מהירות ב-JobScheduler החל מ-Android 12, ומספק תאימות לאחור בגרסאות קודמות של Android על ידי הענקת גישה לשירות Foreground.

גרסה 2.7.0-rc01

29 בספטמבר 2021

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

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

גרסה 2.7.0-beta01

1 בספטמבר 2021

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

תכונות חדשות

  • הפחתת ריבוי תהליכים של SQLite במהלך אתחול WorkManager.

שינויים ב-API

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

תיקוני באגים

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

גרסה 2.7.0-alpha05

21 ביולי 2021

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

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

גרסה 2.7.0-alpha04

2 ביוני 2021

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

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

שינויים ב-API

  • האפשרות ListenableWorker.setForegroundAsync() כבר לא הוצאה משימוש.
  • מומלץ להשתמש ב-API של WorkRequest.Builder.setExpedited(...) כשהדבר אפשרי. כדי לספק תמיכה טובה יותר במצבים שבהם האפליקציה לא כפופה להגבלות על שירות שפועל בחזית, מפתחים יכולים להשתמש ב-API של ListenableWorker.setForegroundAsync().
  • אם מתבצעת קריאה לפונקציה ListenableWorker.setForegroundAsync(), כשהאפליקציה כפופה להגבלות על השירות שפועל בחזית, הפעולה הזו תגרום להצגת השגיאה ForegroundServiceStartNotAllowedOpt.

תיקוני באגים

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

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

תכונות חדשות

  • מוסיף תמיכה לעובדים שיכולים לפעול בכל תהליך. (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 inspector זמין עכשיו כשמשתמשים ב-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 מכילה את התחייבויות אלה.

תכונות חדשות

  • כדי שתהיה לך אפשרות להשתמש בפונקציות id כדי להריץ שאילתות WorkInfo, צריך להוסיף API ל-WorkQuery. (aosp/1412372, b/157335295)
  • ב-WorkManager יש תמיכה טובה יותר באפליקציות שמשתמשות בתהליכים מרובים עם ארטיפקט חדש (androidx.work:work-multiprocess:*). פריט המידע החדש הזה שנוצר בתהליך הפיתוח (Artifact) עוזר לפתור מספר בעיות באפליקציות גדולות, כולל:
    • בדרך כלל, צריך לאתחל את 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 בעתיד. כדאי לעקוב אחר עדכונים נוספים.

תיקוני באגים

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

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

גרסה 2.4.0

גרסה 2.4.0

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)
  • WorkManager תומך עכשיו ב-RxJava 3. כדי להשתמש ב-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 השעות האחרונות.
    • בקשות עבודה שנמצאות כרגע בהרצה.
    • בקשות עבודה מתוזמנות. (aosp/1235501)
  • הוספה של ExistingWorkPolicy.APPEND_OR_REPLACE, שדומה ל-APPEND, אבל מחליפה שרשרת שביטלה או נכשלה בדרישות המוקדמות. (b/134613984, aosp/1199640)

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

תכונות חדשות

  • WorkManager תומך עכשיו ב-RxJava 3. כדי להשתמש ב-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.Builder שיטות המקוריות withStates, withTags ו-withUniqueWorkNames השתנו ל-fromStates, ל-fromTags ול-fromUniqueWorkNames בהתאמה. (aosp/1280287)

תיקוני באגים

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

גרסה 2.4.0-alpha02

1 באפריל, 2020

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

תכונות חדשות

  • נוסף כלל חדש של איתור שגיאות בקוד (lint), עם אזהרה כשמחייבים גם 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)

תיקוני באגים

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

תיקוני באגים

  • תוקן באג שגרם להרצה של כמה מופעים של Worker רציפים, אחרי יותר מ-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)
  • תיקון למרוץ תהליכים ב-ConstraintController. (aosp/1220100)
  • שיפרנו את מחזור החיים של השירות שפועל בחזית לניהול עבור Workers שפעילים לאורך זמן. (aosp/1226295)
  • שיפרנו את הניהול של ביטול התראות במקרה של ביטולי עובדים שעובדים עם מערכת ניהול זמן ממושך. (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. (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)
  • נוסף כלל של איתור שגיאות בקוד שמבטיח שספק התוכן androidx.work.impl.WorkManagerInitializer יוסר מה-AndroidManifest.xml במהלך שימוש באתחול על פי דרישה. (aosp/1167007)
  • נוספה אזהרה על איתור שגיאות בקוד כאשר המדיניות enqueue() משמשת לפונקציה PeriodicWorkRequest במקום enqueueUniquePeriodicWork(). (aosp/1166032)

שינויים ב-API

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

תיקוני באגים

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

תכונות חדשות

  • נוסף כלל חדש של איתור שגיאות בקוד שמונע שגיאות למפתחים עקב הטמעה שגויה של androidx.work.Configuration.Provider במהלך שימוש באתחול על פי דרישה. aosp/1164559

גרסה 2.3.0-alpha03

23 באוקטובר 2019

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

תכונות חדשות

  • נוסף API של WorkManager.createCancelPendingIntent() שמאפשר לבטל בקלות WorkRequest בלי לרשום רכיב נוסף ב-AndroidManifest.xml. ה-API הזה מקל על ביטול WorkRequestמ-Notifications. אנחנו צופים שהוא יותאם לממשקי ה-API החדשים בחזית בגרסה 2.3.0.
  • Work Manager תלוי עכשיו בגרסה היציבה של 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)

תיקוני באגים

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

גרסה 2.3.0-alpha01

22 באוגוסט 2019

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

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

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

גרסה 2.2.0

גרסה 2.2.0

15 באוגוסט 2019

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

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

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

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

גרסה 2.2.0-rc01

30 ביולי 2019

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

תיקוני באגים

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

גרסה 2.2.0-beta02

19 ביולי 2019

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

תיקוני באגים

  • הוסרה תלות לא מכוונת של Jacoco שבוצעה ב-2.2.0-beta01.

גרסה 2.2.0-beta01

17 ביולי 2019

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

תכונות חדשות

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

תיקוני באגים

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

גרסה 2.1.0

גרסה 2.1.0

11 ביולי 2019

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

שינויים חשובים מאז 2.0.1

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

גרסה 2.1.0-rc01

27 ביוני 2019

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

תיקוני באגים

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

גרסה 2.1.0-beta02

20 ביוני 2019

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

תיקוני באגים

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

גרסה 2.1.0-beta01

13 ביוני 2019

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

תיקוני באגים

  • שירות 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

גרסת WorkManager 2.1.0-alpha02 הושקה. הגרסה הזו כוללת מספר ממשקי 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

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

שינויים ב-API

  • נוסף אתחול לפי דרישה עבור WorkManager, שייצור את WorkManager רק כשיש הפניה אליו. b/127497100 כדי להגדיר את הפרויקט לאתחול על פי דרישה:
    1. משביתים את האתחול האוטומטי.
    2. מטמיעים את Configuration.Provider באובייקט Application בהתאמה אישית.
    3. שנה את כל ההפניות של WorkManager.getInstance() ל- WorkManager.getInstance(Context). כחלק מהשינוי הזה, WorkManager.getInstance() הוצא משימוש. תמיד בטוח יותר להתקשר החלפה של WorkManager.getInstance(Context), גם אם לא עושים זאת אתחול לפי דרישה.
  • נוספה היכולת ליצור Worker ו-ListenableWorker שניתן לבדוק את היחידה באמצעות TestWorkerBuilder ו-TestListenableWorkerBuilder פריט מידע שנוצר בתהליך הפיתוח (Artifact) work-testing.
    • שימו לב ש-work-testing עכשיו מושך את Kotlin כתלות, אבל גם כולל כמה תוספי Kotlin כברירת מחדל.
  • הספירה של ניסיונות הריצה נוספה ל-WorkInfo. b/127290461
  • עכשיו סוגי Data יכולים לאחסן ולאחזר בייטים ומערכי בייטים. זה לא שינוי הגודל המקסימלי של Data אובייקטים.
  • הוצא משימוש CoroutineWorker.coroutineContext. השדה הזה היה שגוי הקלדת CoroutineDispatcher; שלא תצטרכו יותר, תוכלו לעבור את ה-coroutineContext הרצוי בגוף הפונקציה המושעית.
  • RxWorker.createWork() ו-RxWorker.getBackgroundScheduler() עכשיו עם @NonNull סוגי החזרה.

גרסה 2.0.1

גרסה 2.0.1

9 באפריל 2019

ההשקה של WorkManager 2.0.1. גרסה זו זהה ל- 2.0.1-rc01.

גרסה 2.0.1-rc01

3 באפריל 2019

ההשקה של WorkManager 2.0.1-rc01. הגרסה הזו כוללת כמה תיקוני באגים. עבור משתמשים מדור קודם ב- 1.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

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

גרסה 2.0.0-rc01

7 במרץ 2019

ההשקה של WorkManager 2.0.0-rc01. הגרסה הזו זהה לגרסה היציבה 1.0.0 אבל יש לו יחסי תלות של 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

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

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

גרסה 1.0.1-rc01

2 באפריל 2019

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

תיקוני באגים

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

גרסה 1.0.0

גרסה 1.0.0

5 במרץ 2019

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

גרסה 1.0.0-rc02

21 בפברואר 2019

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

תיקוני באגים

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

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

גרסה 1.0.0-rc01

14 בפברואר 2019

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

תיקוני באגים

  • ההטמעה שמבוססת על AlertManager פועלת עכשיו בצורה תקינה עבור 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 להטמעה המבוססת על AlertManager.
  • תוקן מקרה שבו WorkManager לא הצליח לעקוב בצורה נכונה אחרי מגבלות כאשר באמצעות יישום שמבוסס על AlertManager. b/123379508
  • תוקנה מקרה שבו WorkManager נכשל בניסיון נוסף של עבודה על מוות של תהליך כאשר באמצעות יישום שמבוסס על AlertManager. b/123329850
  • תוקן מקרה שגרם ל-WorkManager להדליף Wakelocks במהלך השימוש הטמעה מבוססת AlertManager.

גרסה 1.0.0-beta03

25 בינואר 2019

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

תיקוני באגים

  • הוספנו רגרסיה 1.0.0-beta02 שגרמה לאי-ביצוע העבודה בצורה נכונה במצבים מסוימים. b/123211993
  • תוקן מקרה שבו העבודה לא עמדה כראוי בתזמון ההשהיה לפני ניסיון חוזר. b/122881597
  • בוצע תיקון ConcurrentModificationException במכשירים שפועלת בהם גרסת Android 5.1 (API או) או פחות. זהו המשך התיקון של 1.0.0-beta02. b/121345393
  • הוספנו את exported=false לחלק מהרכיבים במניפסט שהיו חסרים בהערה הזו.
  • מידע כלול על האינטראקציה של WorkManager עם מערכת ההפעלה ב תיעוד ברמת החבילה.

גרסה 1.0.0-beta02

15 בינואר 2019

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

תיקוני באגים

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

גרסה 1.0.0-beta01

19 בדצמבר 2018

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

תיקוני באגים

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

גרסה 1.0.0-alpha13

12 בדצמבר 2018

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

שינויים ב-API

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

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

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

גרסה 1.0.0-alpha12

5 בדצמבר 2018

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

שינויים ב-API

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

שינויים ב-API

  • work-runtime-ktx עם CoroutineWorker חדש.
  • השם של WorkStatus השתנה ל-WorkInfo. כל הווריאציות המתאימות של השיטה getStatus השתנו לשם החדש getWorkInfo וריאנטים תואמים. זהו שינוי תוכנה שעלול לגרום לכשלים.
  • הפרמטר ListenableWorker.onStopped() כבר לא מקבל ארגומנט בוליאני שמייצג אם הפרמטר WorkRequest בוטל. ההבחנה הזו לא מופיעה יותר על ידי WorkManager. זהו שינוי תוכנה שעלול לגרום לכשלים.
  • השם של חבילת androidx.work.test השתנה לחבילה androidx.work.testing. זהו שינוי תוכנה שעלול לגרום לכשלים.
  • המגדירים ב-Constraints כבר לא חלק מה-API הציבורי. זהו שינוי תוכנה שעלול לגרום לכשלים.
  • WorkerParameters.getTriggeredContentUris() ו-WorkerParameters.getTriggeredContentAuthorities() החזירו מערכים בעבר. עכשיו השיטות האלה מחזירות אוספים. זהו שינוי תוכנה שעלול לגרום לכשלים.
  • השם של 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 ואת מספר ה-methods.
  • ניסיון initialize WorkManager יותר מפעם אחת בכל תהליך יוביל מעכשיו ל-IllegalStateException. זהו שינוי תוכנה שעלול לגרום לכשלים.

תיקוני באגים

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

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

  • השם של WorkStatus השתנה ל-WorkInfo. כל הווריאציות המתאימות של השיטה getStatus השתנו לשם החדש getWorkInfo וריאנטים תואמים.
  • הפרמטר ListenableWorker.onStopped() כבר לא מקבל ארגומנט בוליאני שמייצג אם הפרמטר WorkRequest בוטל. ההבחנה הזו לא מופיעה יותר על ידי WorkManager.
  • השם של חבילת androidx.work.test השתנה לחבילה androidx.work.testing.
  • המגדירים ב-Constraints כבר לא חלק מה-API הציבורי.
  • WorkerParameters.getTriggeredContentUris() ו-WorkerParameters.getTriggeredContentAuthorities() החזירו מערכים בעבר. עכשיו השיטות האלה מחזירות אוספים.
  • השם של 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 שעלולים לגרום לכשל. יש לעיין בקטע Breaking API Changes (שינויים ב-API) שבהמשך.

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

שינויים ב-API

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

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

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

גרסה 1.0.0-alpha09

19 בספטמבר 2018

בעיה ידועה

אם נתקלתם בבעיה הבאה: "נמצא יותר מקובץ אחד עם הנתיב הבלתי תלוי של מערכת ההפעלה 'meta-INF/proGuard/androidx-annotations.pro'",

מגניב

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

Kotlin

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

תיקוני באגים

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

שינויים ב-API

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

תיקוני באגים

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

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

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

גרסה 1.0.0-alpha04

26 ביוני 2018

תיקוני באגים

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

גרסה 1.0.0-alpha03

19 ביוני 2018

תיקוני באגים

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

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

  • משימות עם טריגרים של Content 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) מאפשר לך להוסיף לתור מפתחות PeriodicWorkRequest ייחודיים. b/79600647
  • WorkManager.cancelAllWork() מבטל את כל Worker של. ספריות שתלויות ב-WorkManager יכולות לשלוח שאילתה לגבי מועד הקריאה האחרונה של השיטה הזו על ידי שימוש ב-WorkManager.getLastCancelAllTimeMillis() לניקוי נוסף של המצב הפנימי.
  • בוצעה הוספה של WorkManager.pruneWork() כדי להסיר משימות שהושלמו ממסד הנתונים הפנימי. b/79950952, b/109710758

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

  • נוסף תג משתמע לכל פריטי WorkRequest, שהוא שם המחלקה שמוגדר במלואו של Worker. כך אפשר להסיר WorkRequest בלי tag או כשה-id לא זמין. b/109572351

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

  • השם של Worker.WorkerResult השתנה. השם החדש הוא Worker.Result.
  • Worker.onStopped כולל עכשיו פרמטר isCancelled נוסף שמוגדר ל-true כאשר Worker בוטל באופן מפורש.

גרסה 1.0.0-alpha02

24 במאי 2018

תיקוני באגים

  • בוצע תיקון NullPointerException בתאריך State.isFinished(). b/79550068
  • תוקנה בעיה שגרמה לתזמון מחדש של Worker שניות בתאריך Application.onCreate(). b/79660657
  • תוקנה בעיה שבה יכולת לתזמן עבודה רבה יותר מהמותר על ידי מערכת ההפעלה. b/79497378
  • הועבר ניקוי של חסימות מצב שינה המשויכות ל-Worker לשרשור ברקע.
  • נכון לעכשיו, ההטמעה של AlarmManager מתנקה כמו שצריך כשכל העבודה שבהמתנה הושלמה.
  • תוקנו שאילתות SQL של ניקוי נתונים שהשפיעו על לוקאלים לא באנגלית. b/80065360
  • נוספה תמיכה עבור float בData. b/79443878
  • הפונקציה Data.Builder.putAll() מחזירה עכשיו מופע של Builder. b/79699162
  • מידע נוסף על Javadoc ותיקונים מופיעים במאמרי העזרה. b/79691663

שינויים ב-API

  • Worker יכולים להגיב לעצירה. אפשר להשתמש ב-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.