WorkManager
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 22 ตุลาคม 2025 | 2.11.0 | - | - | - |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มการอ้างอิงใน WorkManager คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์
เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับ
แอปหรือโมดูล
ดึงดูด
dependencies { def work_version = "2.11.0" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.11.0" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
ดูข้อมูลเกี่ยวกับการใช้ส่วนขยาย Kotlin ได้ที่เอกสารประกอบเกี่ยวกับ KTX
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยเราปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา
เวอร์ชัน 2.11
เวอร์ชัน 2.11.0
22 ตุลาคม 2025
androidx.work:work-*:2.11.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.11.0 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.10.0
minSdkได้รับการอัปเดตจาก API 21 เป็น API 23 แล้ว- เราได้เพิ่ม API
setRemoteSessionTimeoutMillisในเครื่องมือสร้างการกำหนดค่าของWorkManagerเพื่อให้กำหนดค่าระยะเวลาที่เซสชันRemoteWorkManagerจะยังคงใช้งานได้นับจากการใช้งานครั้งล่าสุด
เวอร์ชัน 2.11.0-rc01
8 ตุลาคม 2025
androidx.work:work-*:2.11.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.11.0-rc01 มีการคอมมิตเหล่านี้
เวอร์ชัน 2.11.0-beta01
24 กันยายน 2025
androidx.work:work-*:2.11.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.11.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
stopRunningWorkWithReasonไปยังWorkManagerTestDriver(Ie53b2, b/439955564)
การแก้ไขข้อบกพร่อง
- แก้ไขการหยุดบริการที่ทำงานอยู่เบื้องหน้าเมื่อมีคำสั่งที่รอดำเนินการ (Iae822, b/432069314)
- แก้ไขข้อผิดพลาดของ Worker ของโครูทีนระยะไกลที่ไม่สามารถยกเลิกการเชื่อมโยงบริการระยะไกล (I842f2, b/247113322)
เวอร์ชัน 2.11.0-alpha01
27 สิงหาคม 2025
androidx.work:work-*:2.11.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.11.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เราได้อัปเดต minSdk จาก API 21 เป็น API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- เราได้เพิ่ม API
setRemoteSessionTimeoutMillisในเครื่องมือสร้างการกำหนดค่าของ WorkManager เพื่อให้กำหนดค่าระยะเวลาที่เซสชัน RemoteWorkManager จะใช้งานได้นับจากการใช้งานครั้งล่าสุด (Ib23c8) - เพิ่ม API เวอร์ชันทดลองใน
WorkRequest.Builderเพื่อใช้การหยุดชั่วคราวเมื่อระบบขัดจังหวะการทำงาน (Ie2dc7, b/335513480) - เพิ่ม API ทดสอบเพื่อส่งในคลาส Worker อื่นไปยัง
TestListenableWorkerBuilderนอกเหนือจากคลาสที่สร้างขึ้นเพื่อรองรับการติดตั้งใช้งานWorkerFactoryที่กำหนดเอง (If6bff, b/389154854)
การแก้ไขข้อบกพร่อง
- แคชความสามารถของเครือข่ายใน
SharedNetworkCallbackเพื่อป้องกัน IPC ที่ไม่จำเป็น (Ie4027, b/427115602) - แก้ไขปัญหาเกี่ยวกับการประเมินข้อจำกัดของเครือข่ายซึ่งรายการงานหลังจากรายการแรกจะไม่ได้รับความสามารถของเครือข่ายปัจจุบัน และจะได้รับ
ConstraintsNotMetแทนหลังจากหมดเวลา (Ib6a66, b/427115602)
เวอร์ชัน 2.10
เวอร์ชัน 2.10.5
24 กันยายน 2025
androidx.work:work-*:2.10.5 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.10.5 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขการหยุดบริการที่ทำงานอยู่เบื้องหน้าเมื่อมีคำสั่งที่รอดำเนินการ (Iae822, b/432069314)
เวอร์ชัน 2.10.4
10 กันยายน 2025
androidx.work:work-*:2.10.4 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.10.4 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่
RemoteCoroutineWorkerยกเลิกการเชื่อมโยงบริการระยะไกลไม่สำเร็จ (I842f2, b/247113322)
เวอร์ชัน 2.10.3
30 กรกฎาคม 2025
androidx.work:work-*:2.10.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.10.3 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ผู้ปฏิบัติงานซึ่งมีข้อจำกัดด้านเครือข่ายเหมือนกับผู้ปฏิบัติงานก่อนหน้าจะรายงานว่าข้อจำกัดของตนไม่เป็นไปตามข้อกำหนด (b/427115602)
เวอร์ชัน 2.10.2
18 มิถุนายน 2025
androidx.work:work-*:2.10.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.10.2 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาเมื่อคงสถานะของ Worker ด้วยคำขอเครือข่ายและความสามารถเริ่มต้น ซึ่งจะทำให้ระบบเพิ่มความสามารถที่นำออกไปแล้วกลับเข้ามาใหม่ ส่งผลให้ Worker ที่มีข้อจำกัดด้านเครือข่ายทำงานผิดปกติ (b/409716532)
- แก้ไขข้อบกพร่องที่จะทำให้ผู้ปฏิบัติงานที่มีข้อจำกัดด้านเครือข่ายไม่สามารถดำเนินการได้ทันทีเนื่องจากไม่เป็นไปตามข้อจำกัด แม้ว่าเครือข่ายและความสามารถจะพร้อมใช้งานก็ตาม (b/423403088)
เวอร์ชัน 2.10.1
23 เมษายน 2025
androidx.work:work-*:2.10.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.10.1 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ลดความเป็นไปได้ที่จะเกิดข้อผิดพลาด
TooManyRequestsExceptionจากการลงทะเบียนWorkManagerของNetworkCallbackที่ใช้สำหรับการติดตามข้อจำกัด (b/231499040, b309d5)
เวอร์ชัน 2.10.0
30 ตุลาคม 2024
androidx.work:work-*:2.10.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.10.0 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.9.1
- เพิ่มแท็กการติดตามไปยังงานจาก
WorkManagerซึ่งทำให้ "adb shell dumpsys jobscheduler" เข้าใจได้ง่ายขึ้นมาก เนื่องจากจะมีชื่อของ Worker ที่กำลังดำเนินการอยู่ นอกจากนี้ เรายังเพิ่มส่วนการติดตามรอบๆ พื้นที่สำคัญของWorkManagerด้วย - เพิ่ม
Configuration.workerCoroutineContextเพื่อควบคุม Dispatcher ที่มีการเรียกใช้CoroutineWorker - นักพัฒนาแอปสามารถระบุ
NetworkRequestเป็นข้อจำกัดสำหรับ Worker ผ่านเมธอดConstraints.setRequiredNetworkRequestได้ ซึ่งจะช่วยให้ควบคุมได้อย่างละเอียดยิ่งขึ้นว่าจะให้ผู้ปฏิบัติงานนี้ทำงานในเครือข่ายใด WorkManager2.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เมื่อหยุด Worker ที่ทำงานอยู่เบื้องหน้าเนื่องจากหมดเวลาการดำเนินการตามประเภทของบริการที่ทำงานอยู่เบื้องหน้า (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 แล้ว
- แก้ไขการหมดเวลาของ Worker ที่ทำงานอยู่เบื้องหน้าประเภท "บริการระยะสั้น" และ "การซิงค์ข้อมูล" ซึ่งทำให้เกิด ANR เมื่อ
WorkManagerไม่ได้เรียกใช้stopSelf()การแก้ไขนี้ใช้ได้เฉพาะกับอุปกรณ์ที่มี API 34 และ 35 ซึ่งมีการเปิดตัวประเภทบริการที่ทำงานอยู่เบื้องหน้า (ca06b2, b/364508145) WorkerParametersAPI ใหม่ที่ช่วยให้เปลี่ยนกระบวนการระยะไกลที่Workerผูกกับเมื่อใช้WorkerFactoryได้ (Ibdc8a, Ie8a90, I7373f)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องที่เกิดจาก
WorkManagerการพยายามรีสตาร์ท Worker ที่ทำงานเป็นเวลานาน (เช่น Worker ที่ทำงานอยู่เบื้องหน้า) เมื่อประเภทงานที่ทำงานอยู่เบื้องหน้ามีสิทธิ์ที่จำเป็นต้องมีใน Android 14 ซึ่งถูกเพิกถอน (b/333957914) - นำการระบุสิทธิ์เข้าถึง API ของแพลตฟอร์มใหม่ด้วยตนเองออก เนื่องจากระบบจะดำเนินการนี้โดยอัตโนมัติผ่านการสร้างโมเดล API เมื่อใช้ R8 กับ AGP 7.3 ขึ้นไป (เช่น R8 เวอร์ชัน 3.3) และสำหรับการสร้างทั้งหมดเมื่อใช้ AGP 8.1 ขึ้นไป (เช่น D8 เวอร์ชัน 8.1) เราขอแนะนำให้ลูกค้าที่ไม่ได้ใช้ AGP อัปเดตเป็น D8 เวอร์ชัน 8.1 ขึ้นไป ดูบทความนี้สำหรับรายละเอียดเพิ่มเติม (Ia60e0, b/345472586)
เวอร์ชัน 2.10.0-alpha02
17 เมษายน 2024
androidx.work:work-*:2.10.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.10.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มความสามารถในการปล่อยช่วงการติดตามผ่าน
@RestrictToTracerที่กำหนดค่าได้ในWorkManager(I17d7f, b/260214125) - เพิ่ม
Configuration.workerCoroutineContextเพื่อควบคุม Dispatcher ที่มีการเรียกใช้CoroutineWorkerซึ่งช่วยหลีกเลี่ยงการใช้Dispatchers.DefaultในWorkManagerได้อย่างสมบูรณ์ (Icd1b7) - เพิ่มตัวแฮนเดิลข้อยกเว้นที่กำหนดเองสำหรับ Workers (Ib1b74, b/261190695)
- ตอนนี้คุณสร้าง
OneTimeWorkRequest.BuilderและPeriodicWorkRequest.Builderด้วยKClassแทนClassได้แล้วval request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()(Ib55f6) - ระบบได้ย้ายข้อมูลคลาส
WorkManagerไปยัง Kotlin แล้ว ตอนนี้เมธอดที่แสดงผลLiveData,ListenableFutureหรือFlowจะให้ข้อมูลการยอมรับค่า Null ที่ถูกต้อง ซึ่งอาจต้องมีการเปลี่ยนแปลงในซอร์สโค้ดของไคลเอ็นต์ หากสมมติฐานเกี่ยวกับค่า Null ในโค้ดนั้นไม่ถูกต้อง (If6757)
เวอร์ชัน 2.10.0-alpha01
24 มกราคม 2024
androidx.work:work-*:2.10.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.10.0-alpha01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- นักพัฒนาแอปสามารถระบุ
NetworkRequestเป็นข้อจำกัดสำหรับ Worker ผ่านเมธอดConstraints.setRequiredNetworkRequestได้ ซึ่งจะช่วยให้ควบคุมได้อย่างละเอียดยิ่งขึ้นว่าจะให้ผู้ปฏิบัติงานนี้ทำงานในเครือข่ายใด
การเปลี่ยนแปลง API
- เพิ่มความสามารถในการระบุ
NetworkRequestเป็นข้อจำกัด (Id98a1, b/280634452)
เวอร์ชัน 2.9
เวอร์ชัน 2.9.1
7 สิงหาคม 2024
androidx.work:work-*:2.9.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.1 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องที่เกิดจาก
WorkManagerการพยายามรีสตาร์ท Worker ที่ทำงานเป็นเวลานาน (เช่น Worker ที่ทำงานอยู่เบื้องหน้า) เมื่อประเภทงานที่ทำงานอยู่เบื้องหน้ามีสิทธิ์เบื้องต้นของ Android 14 ที่ถูกเพิกถอน (b/333957914)
เวอร์ชัน 2.9.0
29 พฤศจิกายน 2023
androidx.work:work-*:2.9.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.8.0
- ความสามารถในการสังเกตผ่าน
Flowตอนนี้คุณสามารถดูความคืบหน้าของ Worker ผ่าน Flow ได้โดยใช้WorkManager.getWorkInfosFlowและวิธีที่คล้ายกัน แทนที่จะใช้LiveData - ตอนนี้
WorkManagerจะให้คำแนะนำว่าเหตุใดก่อนหน้านี้จึงหยุด Worker โดยสามารถค้นหาได้จากตัว Worker เองผ่านเมธอดgetStopReason()หรือจากWorkInfoผ่านgetStopReason() - การกำหนดเวลาที่แน่นอนสำหรับผู้ปฏิบัติงานเป็นระยะๆ ผ่าน
setNextScheduleTimeOverrideซึ่งจะช่วยให้คำนวณตารางเวลาการทำงานแบบเป็นระยะถัดไปแบบไดนามิกได้ ซึ่งสามารถใช้เพื่อใช้งานฟีเจอร์ขั้นสูง เช่น เวลาการรีเฟรชแบบปรับได้ ลักษณะการลองใหม่ที่กำหนดเอง หรือทำให้ Worker ของฟีดข่าวทำงานก่อนที่ผู้ใช้จะตื่นทุกเช้าโดยไม่มีการเลื่อนเวลาExistingPeriodicWorkPolicy.UPDATEควรใช้ร่วมกับเทคนิคเหล่านี้เพื่อหลีกเลี่ยงการยกเลิก Worker ที่กำลังทำงานอยู่ขณะกำหนดเวลา Worker ตัวถัดไป - การทดสอบ WorkManager ด้วยการจับคู่การทำงานของเธรดกับการทำงานจริง
ExecutorsMode.PRESERVE_EXECUTORSสามารถใช้ในinitializeTestWorkManagerเพื่อเก็บรักษาตัวดำเนินการที่ตั้งค่าไว้ในConfigurationและใช้เทรดหลักจริง - เราได้ย้าย API ของโครูทีน เช่น
CoroutineWorkerจากอาร์ติแฟกต์เพิ่มเติม work-runtime-ktx ไปยังอาร์ติแฟกต์หลัก work-runtime แล้ว ตอนนี้ work-runtime-ktx จึงว่างเปล่า
การเปลี่ยนแปลง API
- เพิ่ม
stopReasonไปยังWorkInfoแล้ว ซึ่งจะทำให้stopReasonพร้อมใช้งานหลังจากที่ Worker ทำงานแล้ว ซึ่งอาจเป็นประโยชน์ในการรายงานstopReasonในลักษณะที่ใช้งานได้ เนื่องจากเมื่อหยุด Worker แล้ว ระบบอาจปิดแอปเองอย่างรวดเร็ว (I21386) - อนุญาตให้ตั้งค่า
Clockผ่านการกำหนดค่าและใช้เพื่อขับเคลื่อนลำดับการดำเนินการของการทดสอบ Worker (Ic586e) - เพิ่มเมธอด
getStopReason()ลงในListenableWorkerซึ่งจะให้คำใบ้ว่าเหตุใดจึงหยุด Worker (I07060) - เพิ่ม
WorkManagerTestInitHelper#closeWorkDatabase()เพื่อหลีกเลี่ยงคำเตือนของ Closeguard เกี่ยวกับทรัพยากรที่รั่วไหล (Ia8d49) - ตอนนี้ตัวสร้างของ
WorkInfoเป็นแบบสาธารณะแล้ว ซึ่งอาจมีประโยชน์ในการทดสอบ (Ia00b6, b/209145335) - ตอนนี้
work-runtime-ktxว่างเปล่าแล้ว และCoroutineWorkerรวมถึงยูทิลิตีอื่นๆ ที่เฉพาะเจาะจงสำหรับ Kotlin พร้อมใช้งานในอาร์ติแฟกต์รันไทม์หลักของ Work แล้ว (I71a9a) - เพิ่มวิธีการ
setNextScheduleTimeOverrideซึ่งช่วยให้ตั้งค่าตารางเวลาการทำงานเป็นระยะได้อย่างถูกต้อง (I3b4da) - เพิ่ม
getNextScheduleTimeMillisเพื่อรับข้อมูลเวลาที่กำหนดให้เรียกใช้ลงในWorkInfo(I797e4) - ระบบจะเพิ่มข้อมูลการหน่วงเวลาเริ่มต้นและระยะเวลาลงใน
WorkInfo(I52f2f) - เพิ่มวิธีการสังเกตการณ์พนักงานผ่าน Flows ด้วยวิธีการ
getWorkInfosByTagFlow,getWorkInfoByIdFlow,getWorkInfosForUniqueWorkFlow,getWorkInfosFlow(If122a) - เพิ่มคำอธิบายประกอบ
@RequiresApi(...)ที่ขาดหายไปให้กับตัวสร้างและพร็อพเพอร์ตี้ของConstraintsตอนนี้ค่าเหล่านี้สอดคล้องกับคำอธิบายประกอบที่เกี่ยวข้องในตัวตั้งค่าในConstraints.Builderซึ่งมีมาตั้งแต่WorkManagerเวอร์ชันแรกๆ (I6d7d2) WorkManagerมีขีดจำกัดแยกต่างหากสำหรับ Worker ของ 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
- เพิ่มค่าคงที่สำหรับเหตุผลในการหยุดที่
WorkInfo.stopReasonและListenableWorker.stopReasonแสดงผล (I0cc00)
เวอร์ชัน 2.9.0-alpha02
26 กรกฎาคม 2023
androidx.work:work-*:2.9.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0-alpha02 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้
WorkManagerจะให้คำแนะนำว่าเหตุใดก่อนหน้านี้จึงหยุด Worker โดยสามารถค้นหาได้จากตัว Worker เองผ่านเมธอดgetStopReason()หรือจากWorkInfoผ่านgetStopReason()
การเปลี่ยนแปลง API
- เพิ่ม
stopReasonไปยังWorkInfoแล้ว โดยจะทำให้stopReasonพร้อมใช้งานหลังจากที่ Worker ทำงาน ซึ่งอาจเป็นประโยชน์ในการรายงานstopReasonในลักษณะที่ใช้งานได้ เนื่องจากเมื่อหยุด Worker แล้ว ระบบอาจปิดแอปเองได้อย่างรวดเร็ว (I21386) - อนุญาตให้ตั้งค่า Clock ผ่านการกำหนดค่าและใช้เพื่อขับเคลื่อนลำดับการดำเนินการของการทดสอบ Worker (Ic586e)
- เพิ่มเมธอด
getStopReason()ลงในListenableWorkerซึ่งจะให้คำใบ้ว่าเหตุใดจึงหยุด Worker (I07060) - เพิ่ม
WorkManagerTestInitHelper#closeWorkDatabase()เพื่อหลีกเลี่ยงคำเตือนของ Closeguard เกี่ยวกับทรัพยากรที่รั่วไหล (Ia8d49)
การแก้ไขข้อบกพร่อง
- เพิ่มความสามารถในการข้าม
overrideNextScheduleTimeโดยใช้TestDriverและแก้ไขปัญหาเกี่ยวกับการทดสอบ (Ic2905)
เวอร์ชัน 2.9.0-alpha01
7 มิถุนายน 2023
androidx.work:work-*:2.9.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.0-alpha01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ความสามารถในการสังเกตผ่าน
Flowตอนนี้คุณสามารถดูความคืบหน้าของ Worker ผ่าน Flow ได้โดยใช้WorkManager.getWorkInfosFlowและวิธีที่คล้ายกัน แทนที่จะใช้LiveData - การกำหนดเวลาที่แน่นอนสำหรับผู้ปฏิบัติงานเป็นระยะๆ ผ่าน
setNextScheduleTimeOverrideซึ่งจะช่วยให้คำนวณตารางเวลาการทำงานแบบเป็นระยะถัดไปแบบไดนามิกได้ ซึ่งสามารถใช้เพื่อใช้งานฟีเจอร์ขั้นสูง เช่น เวลาการรีเฟรชแบบปรับได้ ลักษณะการลองใหม่ที่กำหนดเอง หรือทำให้ Worker ของฟีดข่าวทำงานก่อนที่ผู้ใช้จะตื่นทุกเช้าโดยไม่มีการเลื่อนเวลาExistingPeriodicWorkPolicy.UPDATEควรใช้ร่วมกับเทคนิคเหล่านี้เพื่อหลีกเลี่ยงการยกเลิก Worker ที่กำลังทำงานอยู่ขณะกำหนดเวลา Worker คนถัดไป WorkManagerในการทดสอบการจับคู่เธรดกับการผลิตExecutorsMode.PRESERVE_EXECUTORSสามารถใช้เพื่อเก็บรักษาตัวดำเนินการที่ตั้งค่าไว้ในConfigurationและใช้เทรดหลักจริง- เราได้ย้าย API ของโครูทีน เช่น
CoroutineWorkerจากอาร์ติแฟกต์เพิ่มเติมwork-runtime-ktxไปยังอาร์ติแฟกต์หลักwork-runtimeแล้วwork-runtime-ktxว่างแล้ว
การเปลี่ยนแปลง API
- ตอนนี้เครื่องมือสร้างของ
WorkInfoพร้อมใช้งานแบบสาธารณะแล้ว ซึ่งอาจมีประโยชน์ในการทดสอบ (Ia00b6, b/209145335) - ตอนนี้
work-runtime-ktxว่างเปล่าแล้วCoroutineWorkerและตอนนี้ยูทิลิตีอื่นๆ ที่เฉพาะเจาะจงสำหรับ Kotlin พร้อมใช้งานในอาร์ติแฟกต์work-runtimeหลักแล้ว (I71a9a) - เพิ่มวิธีการ
setNextScheduleTimeOverrideซึ่งช่วยให้ตั้งค่าตารางเวลาการทำงานเป็นระยะได้อย่างแม่นยำ (I3b4da) - เปลี่ยนชื่อ
getEarliestRunTimeMillisเป็นgetNextScheduleTimeMillisแล้ว (I2bd7a) - ระบบจะเพิ่มข้อมูลเวลาการทำงานตามกำหนดการครั้งถัดไปลงใน
WorkInfo(I797e4) - ระบบจะเพิ่มข้อมูลการหน่วงเวลาเริ่มต้นและระยะเวลาลงใน
WorkInfo(I52f2f) - เพิ่มวิธีการสังเกตการณ์พนักงานผ่าน Flows ด้วยวิธีการ
getWorkInfosByTagFlow,getWorkInfoByIdFlow,getWorkInfosForUniqueWorkFlow,getWorkInfosFlow(If122a) - เพิ่มคำอธิบายประกอบ
@RequiresApi(...)ที่ขาดหายไปลงในตัวสร้างและพร็อพเพอร์ตี้ของข้อจำกัด ตอนนี้ค่าเหล่านี้สอดคล้องกับคำอธิบายประกอบที่เกี่ยวข้องในตัวตั้งค่าในConstraints.Builderซึ่งมีมาตั้งแต่WorkManagerเวอร์ชันแรกๆ (I6d7d2) WorkManagerมีขีดจำกัดแยกต่างหากสำหรับ Worker ของ 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ซึ่งก่อนหน้านี้จัดการการออกอากาศพร้อมกัน 2 รายการไม่ถูกต้อง (b/236906724)
เวอร์ชัน 2.8.0
8 กุมภาพันธ์ 2023
androidx.work:work-*:2.8.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงสำคัญตั้งแต่เวอร์ชัน 2.7.0
ฟีเจอร์ใหม่
- เราได้เพิ่มความสามารถในการอัปเดต
WorkRequestsในลักษณะที่ไม่รบกวน โดยยังคงเวลาการจัดคิวเดิม การเชื่อมโยง ฯลฯ โปรดดูรายละเอียดเพิ่มเติมเกี่ยวกับฟีเจอร์นี้ในบล็อกโพสต์ฉบับละเอียด รวมถึง Javadoc สำหรับWorkManager.updateWorkและExistingPeriodicWorkPolicy.UPDATE
การเปลี่ยนแปลง API
WorkManager.updateWorkได้รับการเพิ่มเข้ามาเพื่ออัปเดตงานโดยคงเวลาการจัดคิวเดิมและการเชื่อมโยงไว้ (I9a248, b/219446409)- เพิ่ม
ExistingPeriodicWorkPolicy.UPDATEแล้ว นโยบายนี้อนุญาตให้อัปเดตงานที่ทำเป็นระยะๆ ตามชื่อ ซึ่งคล้ายกับREPLACEที่มีอยู่ แต่รบกวนน้อยกว่า โดยจะไม่ยกเลิก Worker หากกำลังทำงานอยู่ และจะรักษาเวลาในการจัดคิวไว้ โดยระบบจะคำนวณการหน่วงเวลาเริ่มต้นและระยะเวลาจากเวลาในการจัดคิวเดิม ไม่ใช่เวลาอัปเดตREPLACEถูกเลิกใช้งานเพื่อลดความสับสนระหว่างREPLACEกับUPDATEซึ่งมีชื่อคล้ายกันมาก หากยังต้องการใช้ความหมายเดิมของREPLACEคุณสามารถใช้CANCEL_AND_REENQUEUEที่เพิ่งเพิ่มเข้ามาใหม่ซึ่งเหมือนกับREPLACEได้ (I985ed, b/219446409) - เพิ่มความสามารถในการสกัดกั้นข้อยกเว้นในการกำหนดเวลาโดยระบุผ่าน
Consumer<Throwable>via setSchedulingExceptionHandler) - เพิ่มความสามารถในการระบุ
Consumer<Throwable>ผ่าน setInitializationExceptionHandler เพื่อพิจารณาว่ามีปัญหาหรือไม่เมื่อพยายามเริ่มต้น WorkManager - ย้ายตัวช่วยในบรรทัดสำหรับ
OneTimeWorkRequest&PeriodicWorkRequestจากandroidx.work:work-runtime-ktxไปยังandroidx.work:work-runtime(I0010f, b/209145335) - เพิ่มเมธอดตัวช่วย
WorkQuery.fromIds,WorkQuery.fromStates,WorkQuery.fromUniqueWorkNames,WorkQuery.fromTagsเพื่อสร้างWorkQueryโดยตรง (b/199919736) (If48f2, b/199919736) - เพิ่ม
getForegroundInfoไปยังWorkerแล้ว (Ic1ead) RxWorkerทั้งสำหรับ RxJava 2 และ RxJava 3 ตอนนี้มีsetForegroundที่แสดงผลCompletableซึ่งใช้แทนsetForegroundInfoAsyncที่แสดงผลListenableFutureได้RxWorkerทั้งสำหรับ RxJava 2 และ RxJava 3 มีgetForegroundInfoที่แสดงผลSingleซึ่งใช้แทนgetForegroundInfoAsyncที่แสดงผลListenableFutureได้ (b/203851459)- ตอนนี้คุณสร้างข้อจำกัดได้โดยตรงแทนการใช้
Constraints.Builderซึ่งสะดวกสำหรับผู้ใช้ Kotlin (Idc390, b/137568653) - เพิ่มความสามารถในการตรวจสอบว่ามีการเริ่มต้น
WorkManagerหรือไม่ นอกจากนี้ เรายังเพิ่มgetConfiguration()API ใหม่สำหรับนักพัฒนาไลบรารีเพื่อรับการกำหนดค่าที่WorkManagerเริ่มต้นด้วย (I6eff3, b/212300336)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาเกี่ยวกับตัวจัดตารางเวลาแบบ Greedy ที่จะป้องกันไม่ให้ Worker ทำงานทันทีเมื่อมีการโหลด (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 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาเกี่ยวกับตัวจัดตารางเวลาแบบ Greedy ที่จะป้องกันไม่ให้ Worker ทำงานทันทีเมื่อมีการโหลด (I9686b, b/248111307)
เวอร์ชัน 2.8.0-alpha04
7 กันยายน 2022
androidx.work:work-*:2.8.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
WorkerInfo.getGeneration()และWorkerParameters.getGeneration()ที่แสดงผลรุ่นของพนักงาน Worker มีหลายรุ่นหากได้รับการอัปเดตผ่านWorkManager.updateWorkหรือWorkManager.enqueueUniquePeriodicWorkโดยใช้ExistingPeriodicWorkPolicy.UPDATEโปรดทราบว่าหาก Worker กำลังทำงานอยู่ วิธีนี้อาจแสดงผล Worker รุ่นใหม่กว่า Worker ที่กำลังทำงานอยู่ หากมีการอัปเดตเกิดขึ้นในระหว่างการเรียกใช้ Worker (I665c5, b/219446409) (I128a9, b/219446409) - เพิ่ม
InitializationExceptionHandlerซึ่งเป็นตัวแฮนเดิลข้อยกเว้นที่ใช้เพื่อตรวจสอบว่ามีปัญหาเกิดขึ้นหรือไม่เมื่อพยายามเริ่มต้นWorkManager(I061de)
เวอร์ชัน 2.8.0-alpha03
10 สิงหาคม 2022
androidx.work:work-*:2.8.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.0-alpha03 มีคอมมิตต่อไปนี้
ฟีเจอร์ใหม่
- เราได้เพิ่มความสามารถในการอัปเดต
WorkRequestsโดยไม่รบกวนการทำงาน ซึ่งจะรักษาเวลาการจัดคิวเดิม การเชื่อมโยง ฯลฯ โปรดดูรายละเอียดเพิ่มเติมที่WorkManager.updateWorkและExistingPeriodicWorkPolicy.UPDATE
การเปลี่ยนแปลง API
WorkManager.updateWorkได้รับการเพิ่มเข้ามาเพื่ออัปเดตงานโดยคงเวลาการจัดคิวเดิมและการเชื่อมโยงไว้ (I9a248, b/219446409)- เพิ่ม
ExistingPeriodicWorkPolicy.UPDATEแล้ว นโยบายนี้อนุญาตให้อัปเดตงานที่ทำเป็นระยะๆ ตามชื่อ ซึ่งคล้ายกับREPLACEที่มีอยู่ แต่รบกวนน้อยกว่า โดยจะไม่ยกเลิก Worker หากกำลังทำงานอยู่ และจะรักษาเวลาในการจัดคิวไว้ ซึ่งระบบจะคำนวณการหน่วงเวลาเริ่มต้นและระยะเวลาจากเวลาในการจัดคิวเดิม ไม่ใช่เวลาอัปเดตREPLACEถูกเลิกใช้งานเพื่อลดความสับสนระหว่างREPLACEและUPDATEซึ่งมีชื่อคล้ายกันมาก หากยังต้องการใช้ความหมายเดิมของREPLACEคุณสามารถใช้CANCEL_AND_REENQUEUEที่เพิ่งเพิ่มเข้ามาใหม่ซึ่งเหมือนกับREPLACEได้ (I985ed, b/219446409) - เพิ่มความสามารถในการสกัดกั้นข้อยกเว้นการจัดเวลาโดยการกำหนด
SchedulingExceptionHandler(I033eb) - ย้ายตัวช่วยในบรรทัดสำหรับ
OneTimeWorkRequestและPeriodicWorkRequestจากandroidx.work:work-runtime-ktxไปยังandroidx.work:work-runtime(I0010f, b/209145335)
การแก้ไขข้อบกพร่อง
- เพิ่ม
@RequiresPermissionลงใน API ที่ต้องได้รับสิทธิ์ POST_NOTIFICATIONS ใน SDK 33 ขึ้นไป (Ie542e, b/238790278)
เวอร์ชัน 2.8.0-alpha02
6 เมษายน 2022
androidx.work:work-*:2.8.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้คุณสร้างข้อจำกัดได้โดยตรงแทนการใช้ Builder ซึ่งสะดวกสำหรับผู้ใช้ Kotlin (Idc390, b/137568653)
- เพิ่มความสามารถในการตรวจสอบว่ามีการเริ่มต้น
WorkManagerหรือไม่ นอกจากนี้ เรายังเพิ่มgetConfiguration()API ใหม่สำหรับนักพัฒนาไลบรารีเพื่อรับการกำหนดค่าที่WorkManagerเริ่มต้นด้วย (I6eff3, b/212300336)
เวอร์ชัน 2.8.0-alpha01
12 มกราคม 2022
androidx.work:work-*:2.8.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.8.0-alpha01 มีคอมมิตต่อไปนี้
การเปลี่ยนแปลง API
- เพิ่มเมธอด Helper
WorkQuery.fromStates,WorkQuery.fromUniqueWorkNames,WorkQuery.fromTagsเพื่อสร้าง WorkQuery โดยตรง (If48f2, b/199919736) - เพิ่มเมธอด BuildCompat เวอร์ชันทดลองสำหรับ SDK ในอนาคต (Iafd82, b/207528937)
- เพิ่ม
getForegroundInfoไปยังWorker(Ic1ead) - เพิ่มเมธอด Helper
WorkQuery.fromIdsเพื่อสร้าง WorkQuery จากรหัสโดยตรง (Ie5bdf, b/199919736) - ตอนนี้ RxWorker มี
setForegroundที่ส่งคืนCompletableซึ่ง ใช้แทนsetForegroundInfoAsyncที่ส่งคืนListenableFutureได้แล้ว (I85156) - ตอนนี้ RxWorker สำหรับ RxJava 2 มี
getForegroundInfoที่แสดงผลSingleซึ่ง ใช้แทนgetForegroundInfoAsyncที่แสดงผลListenableFutureได้ (I21c91, b/203851459) - ตอนนี้ RxWorker สำหรับ RxJava 3 มี
getForegroundInfoที่ส่งคืนSingleซึ่ง ใช้แทนgetForegroundInfoAsyncที่ส่งคืนListenableFutureได้ (I1ca8a) - ตอนนี้ RxWorker มี
setForegroundที่ส่งคืนCompletableซึ่ง ใช้แทนsetForegroundInfoAsyncที่ส่งคืนListenableFutureได้แล้ว (I992a3, b/203851459)
การแก้ไขข้อบกพร่อง
- ส่งต่อการยกเลิกใน
CoroutineScopeไปยังListenableFutureเมื่อใช้suspendCancellableCoroutine(I77e63)
เวอร์ชัน 2.7
เวอร์ชัน 2.7.1
17 พฤศจิกายน 2021
androidx.work:work-*:2.7.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.7.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- การยกเลิกใน
CoroutineScopeจะส่งผลไปยังListenableFutureเมื่อใช้suspendCancellableCoroutine(I77e63) - ระบบจะส่งข้อยกเว้นทันทีเมื่อมีการทำเครื่องหมายคำของานที่ล่าช้าว่าเร่งด่วน bef1762
เวอร์ชัน 2.7.0
13 ตุลาคม 2021
androidx.work:work-*:2.7.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.7.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.6.0
WorkManager เปิดตัว
WorkRequest.Builder.setExpedited(...)API ใหม่เพื่อช่วยจัดการข้อจำกัดของบริการที่ทำงานอยู่เบื้องหน้าใน Android 12เมื่อใช้
setExpedited(...)WorkManager จะมอบหมายให้งานที่เร่งด่วนใน JobScheduler เริ่มตั้งแต่ Android 12 ในขณะที่ยังคงความเข้ากันได้แบบย้อนหลังใน Android เวอร์ชันก่อนหน้าด้วยการมอบหมายให้ Foreground Service
เวอร์ชัน 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
- นำ
@ExperimentalExpeditedWorkAPI ออกเนื่องจาก 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()ไม่ได้เลิกใช้งานแล้ว- เราขอแนะนำให้ใช้
WorkRequest.Builder.setExpedited(...)API เมื่อเป็นไปได้ นักพัฒนาแอปสามารถใช้ListenableWorker.setForegroundAsync()API เพื่อให้การสนับสนุนได้ดียิ่งขึ้นในกรณีที่แอปไม่อยู่ภายใต้ข้อจำกัดของบริการที่ทำงานอยู่เบื้องหน้า - หากมีการเรียกใช้
ListenableWorker.setForegroundAsync()เมื่อแอปอยู่ภายใต้ข้อจำกัดของบริการที่ทำงานอยู่เบื้องหน้า ระบบจะแสดง ForegroundServiceStartNotAllowedException
การแก้ไขข้อบกพร่อง
- เมื่อกำหนดเวลางานเร่งด่วนใหม่ งานนั้นจะไม่เป็นงานเร่งด่วนอีกต่อไป งานเหล่านี้จะกลายเป็นงานปกติ
เวอร์ชัน 2.7.0-alpha03
21 เมษายน 2021
androidx.work:work-*:2.7.0-alpha03 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.7.0-alpha03 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
จาก WorkManager
2.6.0-alpha02: เพิ่มการรองรับ Worker ที่ทำงานในกระบวนการใดก็ได้ (Iaf200)จาก WorkManager
2.6.0-alpha02: เพิ่มRemoteCoroutineWorkerซึ่งเป็นการติดตั้งใช้งานRemoteListenableWorkerที่เชื่อมโยงกับกระบวนการระยะไกลได้ (I30578)
การเปลี่ยนแปลง API
- จาก WorkManager
2.6.0-alpha02:เพิ่มการรองรับข้อจํากัดของเครือข่ายTEMPORARILY_UNMETERED(I08d5e) - จาก WorkManager
2.6.0-alpha02:รองรับ Worker แบบหลายกระบวนการสำหรับsetProgressAsync()(Ib6d08) - จาก WorkManager
2.6.0-alpha02:ทำให้WorkManagerInitializerเป็นแบบสาธารณะเพื่อให้androidx.startup.Initializerอื่นๆ ใช้เป็นทรัพยากร Dependency ได้ (I5ab11)
เวอร์ชัน 2.7.0-alpha02
10 มีนาคม 2021
androidx.work:work-*:2.7.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.7.0-alpha02 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ระบุการเปลี่ยนแปลงของ
PendingIntentอย่างชัดเจนเพื่อแก้ไขข้อขัดข้องเมื่อกำหนดเป้าหมายเป็น Android 12 (b/180884673)
เวอร์ชัน 2.7.0-alpha01
18 กุมภาพันธ์ 2021
androidx.work:work-*:2.7.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.7.0-alpha01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
WorkManager เปิดตัว
WorkRequest.Builder.setExpedited(...)API ใหม่เพื่อพิจารณาข้อจำกัดของบริการที่ทำงานอยู่เบื้องหน้าใน 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" />เพิ่มการรองรับ Worker ที่ทำงานในกระบวนการใดก็ได้ (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/1743817ForceStopRunnableตอนนี้จะทำงานในกระบวนการของแอปหลักเท่านั้น ซึ่งเป็นการเพิ่มประสิทธิภาพและหลีกเลี่ยงการแย่งชิงทรัพยากรสำหรับแอปที่ใช้หลายกระบวนการ 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 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
เพิ่มการรองรับสำหรับ Worker ที่ทำงานในกระบวนการใดก็ได้ (Iaf200)
เพิ่ม
RemoteCoroutineWorkerซึ่งเป็นการติดตั้งใช้งานRemoteListenableWorkerที่เชื่อมโยงกับกระบวนการระยะไกลได้ (I30578)
การเปลี่ยนแปลง API
- เพิ่มการรองรับข้อจำกัดเครือข่าย
TEMPORARILY_UNMETERED(I08d5e) - การรองรับ Worker แบบหลายกระบวนการสำหรับ
setProgressAsync()(Ib6d08) - ตั้งค่า
WorkManagerInitializerเป็นสาธารณะเพื่อให้androidx.startup.Initializerอื่นๆ ใช้เป็นทรัพยากร Dependency ได้ (I5ab11)
เวอร์ชัน 2.6.0-alpha01
24 มีนาคม 2021
androidx.work:work-*:2.6.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.6.0-alpha01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
WorkManagerตอนนี้ใช้androidx.startupเพื่อเริ่มต้น WorkManager แล้ว ก่อนหน้านี้androidx.work.impl.WorkManagerInitializerเป็นผู้ดำเนินการนี้ (aosp/1608813)หากคุณเคยใช้
tools:node="remove"ContentProviderเพื่อเริ่มต้น วงจรของกระบวนการในอดีต คุณจะต้องทำสิ่งต่อไปนี้แทน<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.impl.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>(หรือ)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
การเปลี่ยนแปลง API
- เพิ่ม
Result.getOutputData()API ซึ่งจะแสดงผลoutputDataของ ListenableWorker (Ie51e3)
การแก้ไขข้อบกพร่อง
- เพิ่มวิธีแก้ปัญหาข้อบกพร่องของ OEM ซึ่งทำให้เกิด
SecurityExceptionเมื่อใช้ API ของAlarmManager(aosp/1587518)
เวอร์ชัน 2.5.0
เวอร์ชัน 2.5.0
27 มกราคม 2021
androidx.work:work-*:2.5.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.5.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.4.0
- อาร์ติแฟกต์
:work:work-multiprocessใหม่สำหรับแอปที่ใช้หลายกระบวนการ ซึ่งจะช่วยเพิ่มประสิทธิภาพด้วยการรวมการจัดกำหนดการคำของานไว้ในกระบวนการเดียว- หากต้องการใช้
work-multiprocessให้กำหนดการอ้างอิงในรายการต่อไปนี้implementation "androidx.work:work-multiprocess:2.5.0" - กำหนดกระบวนการหลักโดยใช้ Configuration.Builder.setDefaultProcessName(String)
- เมื่อใช้
work-multiprocessคุณอาจต้องการใช้ RemoteWorkManager เพื่อจัดการWorkRequestด้วย RemoteWorkManager จะติดต่อกระบวนการที่กำหนดเสมอ ตัวกำหนดตารางเวลาในกระบวนการจะทำงานในกระบวนการที่กำหนดด้วย
- หากต้องการใช้
- บางครั้ง
ActivityManagerไม่สามารถสร้างอินสแตนซ์JobServiceเพื่อเริ่มงานได้ ซึ่งทำให้ระบบทิ้งงานที่เกี่ยวข้องโดยไม่มีการแจ้งเตือนเนื่องจากข้อบกพร่องของแพลตฟอร์มWorkManagerจะตรวจสอบว่ามีงานสำรองสำหรับทุกๆWorkRequestเมื่อมีการเริ่มต้นApplicationโดยการเทียบชื่องาน ซึ่งจะช่วยปรับปรุงความน่าเชื่อถือในการเรียกใช้งานอย่างมาก (b/172475041, aosp/1489577) WorkManagerจำกัดการเติบโตของฐานข้อมูลโดยการลดระยะเวลาบัฟเฟอร์ที่ระบบติดตามWorkRequestหลังจากที่WorkRequestเสร็จสมบูรณ์ ก่อนหน้านี้ระยะเวลาคือ7วัน โดยลดลงเหลือ1วัน + ระยะเวลา keepResultsForAtLeast (aosp/1419708)- ตอนนี้
TestListenableWorkerBuilderรองรับคลาสที่ทำให้เป็นจริงซึ่งขยายListenableWorkerเพื่อให้การทดสอบง่ายขึ้น (aosp/1443299, b/169787349) - ตอนนี้เครื่องมือตรวจสอบ WorkManager พร้อมให้ใช้งานแล้วเมื่อใช้ Android Studio Arctic Fox
เวอร์ชัน 2.5.0-rc01
13 มกราคม 2021
androidx.work:work-*:2.5.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.5.0-rc01 มีคอมมิตต่อไปนี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องในกรณีที่
getWorkInfosLiveDataไม่ถูกต้องจะใช้ไม่ได้หลังจากอัปเดตเอนทิตีเมื่อใช้ API ที่อิงตามWorkQuery(aosp/1540566, b/173769028) - แก้ไขข้อบกพร่องที่ทำให้ระบบไม่ได้ทำเครื่องหมายธุรกรรมในฐานข้อมูลว่าสำเร็จในบางกรณีซึ่งพบน้อยมาก ซึ่งทำให้เกิดปัญหาในอุปกรณ์ Motorola บางรุ่น (aosp/1535368, b/175944460)
- แก้ไขข้อบกพร่องเพื่อไม่สนใจ
NoSuchElementExceptions เมื่อพยายามยกเลิกการเชื่อมโยงจากกระบวนการที่หยุดทำงาน (aosp/1530589) - ปรับปรุง
ConstraintTrackingWorkerเพื่อหยุดListenableWorkerเฉพาะในกรณีที่ยังไม่ได้หยุด (aosp/1496844, b/172946965) - อัปเดตไลบรารี androidx.work เพื่อกำหนดเป้าหมายเป็น Java 8 (Ibd2f2)
เวอร์ชัน 2.5.0-beta02
2 ธันวาคม 2020
androidx.work:work-*:2.5.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.5.0-beta02 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องใน
androidx.work:work-multiprocessซึ่ง WorkManager บล็อกเธรดการเรียกโดยไม่ตั้งใจเมื่อพยายามเชื่อมโยงกับกระบวนการที่กำหนด (aosp/1475538) - แก้ไขข้อบกพร่องที่ทำให้ระบบกระทบยอด
PeriodicWorkRequestไม่ถูกต้อง (b/172475041, aosp/1489577) - เพิ่มวิธีแก้ปัญหาข้อบกพร่องของแพลตฟอร์มเมื่อหยุดบริการที่ทำงานอยู่เบื้องหน้าขณะใช้
setForeground*API (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และRemoteWorkContinuationAPI เหล่านี้จะไม่มีเครื่องหมาย@Restrictedอีกต่อไป (aosp/1432091) - แก้ไขกฎ ProGuard สำหรับ
:work:work-multiprocess(aosp/1432091) - ปรับปรุงวงจรการแจ้งเตือนสำหรับงานที่ใช้เวลานานซึ่งเชื่อมโยงกับบริการที่ทำงานอยู่เบื้องหน้า (b/168502234, aosp/1431331)
เวอร์ชัน 2.5.0-alpha02
16 กันยายน 2020
androidx.work:work-*:2.5.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.5.0-alpha02 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม API ไปยัง WorkQuery เพื่อให้ใช้
idเพื่อค้นหาWorkInfoได้ (aosp/1412372, b/157335295) - WorkManager รองรับแอปที่ใช้หลายกระบวนการได้ดียิ่งขึ้นด้วยอาร์ติแฟกต์ใหม่ (
androidx.work:work-multiprocess:*) อาร์ติแฟกต์ใหม่นี้ช่วยแก้ปัญหาบางอย่างที่แอปขนาดใหญ่พบได้ เช่น- โดยปกติแล้ว WorkManager จะต้องเริ่มต้นในกระบวนการของแอปทุกกระบวนการ ซึ่งไม่ดีนักเนื่องจากจะทำให้เกิดการแย่งกันใช้ SQLite มากขึ้น ซึ่งจะทำให้เกิดปัญหาอื่นๆ ตามมา ตอนนี้ WorkManager มี API ใหม่ที่ใช้กำหนดกระบวนการของแอปหลักได้โดยใช้
Configuration#setDefaultProcessName(processName)processNameคือชื่อกระบวนการที่สมบูรณ์ในตัวเองซึ่งมีลักษณะเป็นpackageName:processName(เช่นcom.example:remote) - ชุด API ใหม่:
RemoteWorkManagerและRemoteWorkContinuationถึงenqueue,cancelและqueryคำของาน API เหล่านี้ไม่มีตัวแปรLiveDataเพื่อหลีกเลี่ยงการแย่งกันใช้ SQLite ในหลายกระบวนการ ระบบจะส่งต่อการเรียกไปยังenqueue,cancelและqueryไปยังกระบวนการแอปprimaryโดยใช้ AIDL และส่งคืนListenableFutureที่ไหลลื่น (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- โดยปกติแล้ว WorkManager จะต้องเริ่มต้นในกระบวนการของแอปทุกกระบวนการ ซึ่งไม่ดีนักเนื่องจากจะทำให้เกิดการแย่งกันใช้ SQLite มากขึ้น ซึ่งจะทำให้เกิดปัญหาอื่นๆ ตามมา ตอนนี้ WorkManager มี API ใหม่ที่ใช้กำหนดกระบวนการของแอปหลักได้โดยใช้
การเปลี่ยนแปลง 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)
การมีส่วนร่วมภายนอก
- แก้ไขเอกสารประกอบสำหรับ
ArrayCreatingInputMergerโดย Zac Sweers (github/43)
เวอร์ชัน 2.4.0
เวอร์ชัน 2.4.0
22 กรกฎาคม 2020
androidx.work:work-*:2.4.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.4.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.3.0
- ตอนนี้ตัวกำหนดตารางเวลาในกระบวนการของ
WorkManagerมีประสิทธิภาพมากขึ้นแล้ว ก่อนหน้านี้Schedulerในกระบวนการจะพิจารณาเฉพาะการดำเนินการที่ไม่มีการหน่วงเวลาและเป็นไปตามข้อจำกัด ตอนนี้ตัวกำหนดตารางเวลาในกระบวนการจะติดตามWorkRequests ที่อาจดำเนินการในอนาคต รวมถึง PeriodicWorkRequests นอกจากนี้Schedulerที่กำลังดำเนินการจะไม่สังเกตขีดจำกัดการตั้งเวลาด้วย (แต่ยังคงจำกัดขนาดของExecutorที่ WorkManager ใช้) ซึ่งหมายความว่าตอนนี้แอปพลิเคชันสามารถเรียกใช้ WorkRequest ได้มากขึ้นเมื่อแอปอยู่เบื้องหน้าWorkManagerยังเปิดตัวRunnableSchedulerใหม่ที่กำหนดค่าได้เพื่อจัดการการดำเนินการของงานที่ล่าช้าในเบื้องหน้า (aosp/1185778) - ตอนนี้ WorkManager รองรับ RxJava 3 แล้ว หากต้องการใช้ RxJava 3 คุณควรใส่การอ้างอิง
implementation "androidx.work:work-rxjava3:2.4.0"ต่อไปนี้ (aosp/1277904) - เพิ่มความสามารถในการค้นหา
WorkInfoโดยใช้WorkQueryซึ่งจะเป็นประโยชน์เมื่อนักพัฒนาแอปต้องการค้นหาWorkInfos โดยใช้แอตทริบิวต์หลายรายการร่วมกัน ดูข้อมูลเพิ่มเติมได้ที่WorkQuery.Builder.fromStates(...),WorkQuery.Builder. fromTags(...)หรือWorkQuery.Builder.fromUniqueWorkNames(...)(aosp/1253230, b/143847546) เพิ่มความสามารถในการขอข้อมูลการวินิจฉัยจาก
WorkManagerโดยใช้adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"ซึ่งมีข้อมูลที่เป็นประโยชน์มากมาย เช่น
- คำของานที่เสร็จสมบูรณ์ในช่วง 24 ชั่วโมงที่ผ่านมา
- WorkRequest ที่กำลังทำงานอยู่
- WorkRequest ที่กำหนดเวลาไว้ (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 ควรใช้เมื่อใช้ JobService API โดยตรง aosp/1223567
- เพิ่มกฎการตรวจสอบใหม่เพื่อให้แน่ใจว่า
ListenableWorkerการใช้งานจะpublicเมื่อใช้WorkerFactoryเริ่มต้น (aosp/1291262)
- การใช้
ตอนนี้ระบบจะส่งสัญญาณการเรียกไปยัง
setForegroundAsync()ที่ไม่เสร็จสมบูรณ์ก่อนที่ListenableWorkerจะเสร็จสมบูรณ์ผ่านIllegalStateExceptionในListenableFutureที่ส่งคืน (aosp/1262743)แก้ไขข้อบกพร่องที่ทำให้
ForegroundServiceไม่หยุดทำงานหลังจากที่Workerในเบื้องหน้าถูกขัดจังหวะ (b/155579898, aosp/1302153)แก้ไขข้อบกพร่องที่
WorkManagerพยายามเรียกใช้หลายอินสแตนซ์ของWorkerที่เชื่อมโยงกับ Foreground Service (b/156310133, aosp/1309853)
เวอร์ชัน 2.4.0-rc01
24 มิถุนายน 2020
androidx.work:work-*:2.4.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.4.0-rc01 มีคอมมิตต่อไปนี้
การแก้ไขข้อบกพร่อง
- ตอนนี้เครื่องจัดตารางเวลาในกระบวนการใช้ API ที่ดีขึ้นเพื่อกำหนดชื่อของกระบวนการ ซึ่งจะเป็นประโยชน์ในการรองรับแอปที่ใช้หลายกระบวนการได้ดียิ่งขึ้น (aosp/1324732)
เวอร์ชัน 2.4.0-beta01
20 พฤษภาคม 2020
androidx.work:work-gcm:2.4.0-beta01, androidx.work:work-runtime:2.4.0-beta01, androidx.work:work-runtime-ktx:2.4.0-beta01, androidx.work:work-rxjava2:2.4.0-beta01 และ androidx.work:work-testing:2.4.0-beta01 เวอร์ชัน 2.4.0-beta01 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้
ForegroundServiceไม่หยุดทำงานหลังจากที่Workerในเบื้องหน้าถูกขัดจังหวะ (b/155579898, aosp/1302153) - แก้ไขข้อบกพร่องที่
WorkManagerพยายามเรียกใช้หลายอินสแตนซ์ของWorkerที่เชื่อมโยงกับ Foreground Service (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.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 ใหม่ที่จะเตือนเมื่อ
WorkRequestต้องใช้ทั้งConstraints.setRequiresCharging(...)และConstraints.setRequiresDeviceIdle(...)อุปกรณ์บางเครื่องจะไม่ชาร์จและไม่ได้ใช้งานพร้อมกัน ดังนั้นคำขอดังกล่าวจึงอาจทำงานน้อยกว่าที่คาดไว้ (aosp/1253840)
การเปลี่ยนแปลง API
เพิ่มความสามารถในการค้นหา
WorkInfoโดยใช้WorkQueryซึ่งจะเป็นประโยชน์เมื่อนักพัฒนาแอปต้องการค้นหาWorkInfos โดยใช้แอตทริบิวต์หลายรายการร่วมกัน ดูข้อมูลเพิ่มเติมได้ที่WorkQuery.Builder withStates(...),WorkQuery.Builder withTags(...)หรือWorkQuery.Builder withUniqueWorkNames(...)(aosp/1253230, b/143847546)ตอนนี้ระบบจะส่งสัญญาณการเรียกไปยัง
setForegroundAsync()ที่ไม่เสร็จสมบูรณ์ก่อนที่ListenableWorkerจะเสร็จสมบูรณ์ผ่านIllegalStateExceptionในListenableFutureที่ส่งคืน (aosp/1262743)
การแก้ไขข้อบกพร่อง
- แก้ไขกฎการตรวจสอบที่ตรวจหาระยะเวลาช่วงที่ไม่ถูกต้องสำหรับ
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นอกจากนี้ Scheduler ในกระบวนการยังไม่สังเกตขีดจำกัดการจัดกำหนดการ (แต่ยังคงจำกัดขนาดของ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ควรใช้เมื่อใช้JobServiceAPI โดยตรง (aosp/1223567)
- การใช้
การเปลี่ยนแปลง API
เพิ่ม
ExistingWorkPolicy.APPEND_OR_REPLACEซึ่งคล้ายกับAPPENDแต่แทนที่เชนที่ยกเลิกหรือมีข้อกำหนดเบื้องต้นที่ไม่สำเร็จ (b/134613984, aosp/1199640)ให้ความสามารถในการเพิ่ม
RunnableSchedulerที่กำหนดเองเพื่อติดตามWorkRequestที่ต้องดำเนินการในอนาคต โดยตัวกำหนดเวลาระดับกระบวนการจะใช้ข้อมูลนี้ (aosp/1203944)
การแก้ไขข้อบกพร่อง
- เลิกใช้งาน
setProgress()ในRxWorkerเนื่องจากก่อนหน้านี้ฟังก์ชันนี้จะแสดงผลSingle<Void>ซึ่งเป็นประเภทที่เป็นไปไม่ได้ เพิ่ม API ใหม่setCompletableProgress()ซึ่งจะแสดงผลCompletableแทน และเพิ่มกฎ Lint ใหม่ที่จะช่วยในการย้ายข้อมูลไปยัง API ใหม่ (b/150080946, aosp/1242665)
เวอร์ชัน 2.3.4
เวอร์ชัน 2.3.4
18 มีนาคม 2020
androidx.work:work-*:2.3.4 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.4 มีคอมมิตต่อไปนี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้
Workers ที่ทำงานเป็นเวลานานหลายรายการทำงานหลังจากเกินกรอบเวลาการดำเนินการ 10 นาที (aosp/1247484, b/150553353) - แก้ไข Lint ของ WorkManager
IssueRegistryขอขอบคุณ @ZacSweers จาก Slack สำหรับการมีส่วนร่วม (aosp/1217923)
เวอร์ชัน 2.3.3
เวอร์ชัน 2.3.3
4 มีนาคม 2020
androidx.work:work-*:2.3.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.3 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องในเรื่องที่หาก
Workerถูกขัดจังหวะ ระบบจะไม่กำหนดเวลาใหม่ให้ถูกต้อง (b/150325687, aosp/1246571)
เวอร์ชัน 2.3.2
เวอร์ชัน 2.3.2
19 กุมภาพันธ์ 2020
androidx.work:work-*:2.3.2 ได้รับการเผยแพร่ เวอร์ชัน 2.3.2 มีคอมมิตต่อไปนี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ WorkManager เกินขีดจำกัดงาน 100 รายการใน JobScheduler ในบางกรณี (aosp/1226859, b/149092520)
- แก้ไขเงื่อนไขการแข่งขันใน ConstraintControllers (aosp/1220100)
- ปรับปรุงวงจรบริการที่ทำงานอยู่เบื้องหน้าในการจัดการสำหรับ Worker ที่ทำงานเป็นเวลานาน (aosp/1226295)
- ปรับปรุงการจัดการการยกเลิกการแจ้งเตือนสำหรับ Worker ที่ทำงานเป็นเวลานานเมื่อมีการยกเลิก Worker (aosp/1228346)
เวอร์ชัน 2.3.1
เวอร์ชัน 2.3.1
5 กุมภาพันธ์ 2020
androidx.work:work-*:2.3.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.1 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- จัดการวงจรของ
Notificationได้ดียิ่งขึ้นสำหรับWorkerที่ทำงานเป็นเวลานานซึ่งจะทำงานเมื่อServiceที่อยู่เบื้องหน้าทำงานอยู่ (aosp/1218539, b/147249312) - ตอนนี้
WorkManagerต้องใช้androidx.sqlite:sqlite-framework:2.1.0เวอร์ชันเสถียร (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 จะรวมกฎ Lint เพิ่มเติมเป็นส่วนหนึ่งของไลบรารี ซึ่งจะช่วยตรวจหาข้อบกพร่องได้ตั้งแต่เนิ่นๆ
เวอร์ชัน 2.3.0-rc01
8 มกราคม 2020
androidx.work:work-*:2.3.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-rc01 มีคอมมิตเหล่านี้
รุ่นนี้เหมือนกับ 2.3.0-beta02
แก้ไขข้อบกพร่อง
- ตอนนี้อาร์ติแฟกต์
work-testingจะกำหนดทรัพยากร Dependency ใน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)
- เพิ่มกฎการตรวจสอบโค้ดที่ช่วยให้มั่นใจได้ว่าระบบจะนำ Content Provider
androidx.work.impl.WorkManagerInitializerออกจากAndroidManifest.xmlเมื่อใช้การเริ่มต้นตามต้องการ (aosp/1167007) - เพิ่มคำเตือน Lint เมื่อใช้
enqueue()สำหรับPeriodicWorkRequestแทนenqueueUniquePeriodicWork()(aosp/1166032)
การเปลี่ยนแปลง API
ForegroundInfoกำหนดให้คุณต้องระบุnotificationIdที่จะใช้เมื่อใช้ListenableWorker.setForegroundAsync()นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ ซึ่งจะช่วยให้คุณเรียกใช้Workerที่ทำงานเป็นเวลานานหลายรายการพร้อมกันได้WorkManagerยังจัดการอายุการใช้งานของNotificationที่ระบุได้ดีขึ้นด้วย (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องในการติดตั้งใช้งาน AlarmManager ที่สัญญาณเตือนไม่ได้รับการล้างข้อมูลอย่างถูกต้อง (aosp/1156444)
- แก้ไขข้อบกพร่องที่ทำให้รายการ
WorkRequestว่างเปล่าทำให้สร้างเชนWorkContinuationไม่ถูกต้อง (b/142835274, aosp/1157051)
การเปลี่ยนแปลงการขึ้นต่อกัน
- ตอนนี้ WorkManager ใช้ Room 2.2.2 แล้ว
เวอร์ชัน 2.3.0-beta01
20 พฤศจิกายน 2019
androidx.work:work-*:2.3.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-beta01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มกฎการตรวจสอบใหม่ซึ่งป้องกันข้อผิดพลาดของนักพัฒนาซอฟต์แวร์เนื่องจากการใช้งาน
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 ซึ่งช่วยให้ยกเลิกWorkRequestได้ง่ายๆ โดยไม่ต้องลงทะเบียนคอมโพเนนต์อื่นในAndroidManifest.xmlAPI นี้ช่วยให้ยกเลิกWorkRequestจากNotificationได้ง่ายเป็นพิเศษ เราคาดว่าฟีเจอร์นี้จะทำงานร่วมกับ 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
- เราได้เปลี่ยนชื่อ
containsKeyAPI ในDataเป็นhasKeyWithValueOfTypeแล้ว นอกจากนี้ เรายังได้เปลี่ยนชื่อวิธีการขยายที่เกี่ยวข้องในktxไลบรารีด้วย (b/141916545)
แก้ไขข้อบกพร่อง
- WorkManager จะจัดกำหนดเวลาการทำงานอย่างเป็นธรรมเมื่อจำนวน
WorkRequestที่เข้าคิวใกล้ถึงขีดจำกัดการจัดกำหนดเวลา (aosp/1105766) - WorkManager จะเรียกใช้
ListenableWorker#onStopped()ก็ต่อเมื่อยังไม่ได้ทำงานให้เสร็จสมบูรณ์ (b/140055777) - ตอนนี้ WorkManager จะนำข้อมูลความคืบหน้าออกเมื่อ Worker ถูกขัดจังหวะหรือเข้าสู่สถานะสิ้นสุด (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สามารถตั้งค่าความคืบหน้าผ่านsetProgressAsync()API ได้แล้ว นอกจากนี้ ยังได้เพิ่มsuspend-ingsetProgressAPI ที่เกี่ยวข้องในCoroutineWorkerและsetProgressในRxWorkerซึ่งจะแสดงผลSingle<Void>API ใหม่เหล่านี้ช่วยให้ Workers สามารถสื่อสารข้อมูลความคืบหน้าผ่านWorkInfoซึ่งมี APIgetProgressที่เกี่ยวข้อง (b/79481554)DataมีcontainsKey()API ที่ใช้ตรวจสอบว่าข้อมูลนำเข้าของ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 พร้อมใช้งานสำหรับระดับ API <= 22 นี่คือการขึ้นต่อกันที่ไม่บังคับซึ่งช่วยให้การประมวลผลเบื้องหลังมีความน่าเชื่อถือและมีประสิทธิภาพมากขึ้นใน API เวอร์ชันเก่า หากแอปใช้บริการ Google Play ให้เพิ่มทรัพยากร Dependency นี้ลงในไฟล์ Gradle เพื่อรับการสนับสนุน GCMNetworkManager โดยอัตโนมัติ หากบริการ Google Play ไม่พร้อมใช้งาน WorkManager จะยังคงกลับไปใช้ AlarmManager ในอุปกรณ์รุ่นเก่าต่อไป
เวอร์ชัน 2.2.0-rc01
30 กรกฎาคม 2019
androidx.work:work-*:2.2.0-rc01 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องในการติดตั้งใช้งาน AlarmManager ซึ่งทำให้บริการปิดตัวลงก่อนเวลาอันควรและส่งผลให้เกิด
RejectedExecutionExceptionในบางกรณี (aosp/1092374) (b/138238197) - เพิ่มวิธีแก้ปัญหาชั่วคราวสำหรับ
NullPointerExceptionเมื่อใช้ API ของJobSchedulerในอุปกรณ์บางรุ่น (aosp/1091020) (b/138364061), (b/138441699)
เวอร์ชัน 2.2.0-beta02
19 กรกฎาคม 2019
androidx.work:work-*:2.2.0-beta02 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
แก้ไขข้อบกพร่อง
- นำการขึ้นต่อกันของ Jacoco ที่ไม่ได้ตั้งใจออก ซึ่งมีการนำมาใช้ใน
2.2.0-beta01
เวอร์ชัน 2.2.0-beta01
17 กรกฎาคม 2019
androidx.work:work-*:2.2.0-beta01 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
ฟีเจอร์ใหม่
androidx.work:work-gcm:2.2.0-beta01คืออาร์ติแฟกต์ Maven ใหม่ที่รองรับการใช้ GCMNetworkManager เป็นตัวกำหนดตารางเวลาเมื่อบริการ Google Play พร้อมใช้งานสำหรับระดับ API <= 22 ซึ่งเป็นทรัพยากร Dependency ที่ไม่บังคับที่จะช่วยให้การประมวลผลในเบื้องหลังมีความน่าเชื่อถือและมีประสิทธิภาพมากขึ้นใน API เวอร์ชันเก่า หากแอปใช้บริการ Google Play ให้เพิ่มทรัพยากร Dependency นี้ลงในไฟล์ Gradle เพื่อรับการสนับสนุน GCMNetworkManager โดยอัตโนมัติ หากบริการ Google Play ไม่พร้อมใช้งาน WorkManager จะยังคงกลับไปใช้ AlarmManager ในอุปกรณ์รุ่นเก่าต่อไป
แก้ไขข้อบกพร่อง
- แก้ไขปัญหาสำหรับ
IllegalArgumentExceptionเมื่อติดตามสถานะเครือข่ายในแท็บเล็ต Nvidia Shield K1 (aosp/1010188)
เวอร์ชัน 2.1.0
เวอร์ชัน 2.1.0
11 กรกฎาคม 2019
androidx.work:work-*:2.1.0 ได้รับการเผยแพร่แล้ว ผลงานนี้เหมือนกับ androidx.work:work-*:2.1.0-rc01 ทุกประการ
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.0.1
work-runtime-ktxกำหนดให้ใช้ Java 8 แล้ว หากพบปัญหา คุณสามารถเพิ่มข้อมูลต่อไปนี้ในbuild.gradleได้kotlinOptions { jvmTarget = "1.8" }- เพิ่มการเริ่มต้นตามต้องการสำหรับ WorkManager ซึ่งจะสร้าง WorkManager
เมื่อมีการอ้างอิงเท่านั้น b/127497100 หากต้องการตั้งค่าโปรเจ็กต์สำหรับการเริ่มต้นตามต้องการ ให้ทำดังนี้
- ปิดใช้ตัวเริ่มต้นอัตโนมัติ
- ใช้
Configuration.Providerในออบเจ็กต์Applicationที่กำหนดเอง - เปลี่ยนการอ้างอิงทั้งหมดของ
WorkManager.getInstance()เป็นWorkManager.getInstance(Context)ส่วนหนึ่งของการเปลี่ยนแปลงนี้คือเราได้ เลิกใช้งานWorkManager.getInstance()การเรียกใช้ฟังก์ชันใหม่WorkManager.getInstance(Context)แทนฟังก์ชันเดิมจะปลอดภัยกว่าเสมอ แม้ว่าคุณจะไม่ได้ เริ่มต้นใช้งานแบบออนดีมานด์ก็ตาม
PeriodicWorkRequestรองรับการหน่วงเวลาเริ่มต้นแล้ว คุณสามารถใช้วิธีการsetInitialDelayในPeriodicWorkRequest.Builderเพื่อตั้งค่า การหน่วงเวลาเริ่มต้นได้ b/111404867- เพิ่มความสามารถในการมอบสิทธิ์ให้
WorkerFactorys ที่ลงทะเบียนอย่างน้อย 1 รายโดยใช้DelegatingWorkerFactoryb/131435993 - เพิ่มความสามารถในการปรับแต่ง
Executorที่ WorkManager ใช้สำหรับ การบันทึกภายในทั้งหมดผ่านConfiguration.Builder.setTaskExecutor - เพิ่มความสามารถในการสร้างคลาส
WorkerและListenableWorkerที่ทดสอบหน่วยได้โดยใช้TestWorkerBuilderและTestListenableWorkerBuilderในอาร์ติแฟกต์work-testing- โปรดทราบว่า
work-testingจะดึง Kotlin มาเป็นทรัพยากร Dependency และ รวมส่วนขยาย Kotlin หลายรายการโดยค่าเริ่มต้น
- โปรดทราบว่า
- เพิ่มจำนวนครั้งที่พยายามเรียกใช้ไปยัง
WorkInfob/127290461 - ตอนนี้
Dataประเภทจัดเก็บและเรียกข้อมูลไบต์และอาร์เรย์ไบต์ได้แล้ว การดำเนินการนี้จะไม่เปลี่ยนขนาดสูงสุดของออบเจ็กต์Data - ตอนนี้ WorkManager ขึ้นอยู่กับ
Room 2.1.0ซึ่งน่าจะช่วยแก้ไขปัญหาเกี่ยวกับฐานข้อมูลได้
เวอร์ชัน 2.1.0-rc01
27 มิถุนายน 2019
androidx.work:work-*:2.1.0-rc01 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้แอปพลิเคชันขัดข้องเมื่อเรียกใช้งานที่มี
JobSchedulerขณะที่กำลังสำรองข้อมูล b/135858602
เวอร์ชัน 2.1.0-beta02
20 มิถุนายน 2019
androidx.work:work-*:2.1.0-beta02 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
แก้ไขข้อบกพร่อง
TestListenableWorkerBuilderตอนนี้ใช้WorkerFactoryที่ถูกต้องเมื่อสร้างอินสแตนซ์ของListenableWorkerb/135275844- แก้ไขข้อบกพร่องที่ทำให้เกิดการเลื่อนในกรอบเวลาการดำเนินการสำหรับ
WorkRequestเนื่องจากกระบวนการสิ้นสุดลง b/135272196
เวอร์ชัน 2.1.0-beta01
13 มิถุนายน 2019
androidx.work:work-*:2.1.0-beta01 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
แก้ไขข้อบกพร่อง
- ตอนนี้ WorkManager ขึ้นอยู่กับ
Room 2.1.0ซึ่งน่าจะช่วยแก้ไขปัญหาเกี่ยวกับฐานข้อมูลได้ - นำ I/O ของดิสก์เริ่มต้นบางรายการในเทรดหลักออกแล้ว
- แก้ไขปัญหาการหยุดชะงักที่อาจเกิดขึ้นในการติดตามข้อจำกัด b/134361006
- ยกเลิกงานที่ไม่ถูกต้องซึ่งระบุแหล่งที่มาเป็น WorkManager ล่วงหน้า b/134058261
- เพิ่มการเรียกที่ป้องกันไว้บางส่วนไปยัง API ของ JobScheduler สำหรับอุปกรณ์ที่ทำงานไม่ถูกต้อง
เวอร์ชัน 2.1.0-alpha03
5 มิถุนายน 2019
androidx.work:*:2.1.0-alpha03 ได้รับการเผยแพร่แล้ว
แก้ไขข้อบกพร่อง
- ปรับปรุงเอกสารประกอบสำหรับ
PeriodicWorkRequest WorkManagerTestInitHelperตอนนี้ใช้ตัวดำเนินการเบื้องหลังที่ถูกต้องสำหรับการทดสอบแล้ว- การแก้ไขปัญหา SQLite เมื่อจัดการธุรกรรมขนาดใหญ่ในอุปกรณ์บางรุ่น (b/130182503)
- ตอนนี้การขึ้นต่อกันของ WorkManager มีความละเอียดมากขึ้นแล้ว (b/133169148)
- วิธีแก้ข้อบกพร่องเฉพาะของ OEM ในการติดตั้งใช้งาน
JobSchedulerเมื่อกำหนดเวลางานโดยใช้ WorkManager - การปรับปรุงตัวกำหนดตารางเวลาที่อิงตาม AlarmManager เกี่ยวกับอายุการใช้งานของบริการซึ่งก่อนหน้านี้ทำให้เกิดข้อขัดข้องที่พบได้ยาก (b/133313734)
เวอร์ชัน 2.1.0-alpha02
16 พฤษภาคม 2019
เปิดตัว WorkManager 2.1.0-alpha02 เวอร์ชันนี้มี API ใหม่หลายรายการ
การเปลี่ยนแปลง API
PeriodicWorkRequestรองรับการหน่วงเวลาเริ่มต้นแล้ว คุณสามารถใช้วิธีการsetInitialDelayในPeriodicWorkRequest.Builderเพื่อตั้งค่า การหน่วงเวลาเริ่มต้นได้ b/111404867เพิ่มความสามารถในการมอบสิทธิ์ให้
WorkerFactorys ที่ลงทะเบียนอย่างน้อย 1 รายโดยใช้DelegatingWorkerFactoryb/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 หากต้องการตั้งค่าโปรเจ็กต์สำหรับการเริ่มต้นตามต้องการ ให้ทำดังนี้
- ปิดใช้ตัวเริ่มต้นอัตโนมัติ
- ใช้
Configuration.Providerในออบเจ็กต์Applicationที่กำหนดเอง - เปลี่ยนการอ้างอิงทั้งหมดของ
WorkManager.getInstance()เป็นWorkManager.getInstance(Context)ส่วนหนึ่งของการเปลี่ยนแปลงนี้คือเราได้ เลิกใช้งานWorkManager.getInstance()การเรียกใช้ฟังก์ชันใหม่WorkManager.getInstance(Context)แทนฟังก์ชันเดิมจะปลอดภัยกว่าเสมอ แม้ว่าคุณจะไม่ได้ เริ่มต้นใช้งานแบบออนดีมานด์ก็ตาม
- เพิ่มความสามารถในการสร้างคลาส
WorkerและListenableWorkerที่ทดสอบหน่วยได้โดยใช้TestWorkerBuilderและTestListenableWorkerBuilderในอาร์ติแฟกต์work-testing- โปรดทราบว่า
work-testingจะดึง Kotlin มาเป็นทรัพยากร Dependency แต่ก็ รวมส่วนขยาย Kotlin หลายรายการไว้ด้วยโดยค่าเริ่มต้น
- โปรดทราบว่า
- เพิ่มจำนวนครั้งที่พยายามเรียกใช้ไปยัง
WorkInfob/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 - อัปเดตเอกสารประกอบสำหรับ
PeriodicWorkRequests เพื่อระบุว่า API 23 ไม่รองรับเวลาที่ยืดหยุ่น - แก้ไขลิงก์ที่เสียบางลิงก์ในเอกสารประกอบของ Kotlin
เวอร์ชัน 2.0.0
เวอร์ชัน 2.0.0
20 มีนาคม 2019
WorkManager 2.0.0 เปิดตัวแล้ว เวอร์ชันนี้เหมือนกับ 2.0.0-rc01 และเป็น เวอร์ชัน AndroidX ของ 1.0.0 ที่เสถียรพร้อมการอ้างอิง AndroidX เราขอแนะนำให้กำหนดเป้าหมายเวอร์ชันนี้แทนเวอร์ชัน 1.x เดิม การพัฒนาที่ใช้งานอยู่ทั้งหมดจะมุ่งเน้นไปที่เวอร์ชัน 2.x และเวอร์ชัน 1.x จะได้รับการแก้ไขข้อบกพร่องที่สำคัญในช่วงเวลาจำกัดเท่านั้น
เวอร์ชัน 2.0.0-rc01
7 มีนาคม 2019
WorkManager 2.0.0-rc01 เปิดตัวแล้ว เวอร์ชันนี้เหมือนกับเวอร์ชัน 1.0.0 ที่เสถียรทุกประการ แต่มีทรัพยากร Dependency ของ AndroidX เมื่อเวอร์ชันนี้กลายเป็นเวอร์ชัน 2.0.0 ที่เสถียรแล้ว คุณควร รวมเวอร์ชันนี้ไว้ด้วย และเวอร์ชัน 1.x เดิมจะได้รับการแก้ไขข้อบกพร่องที่สำคัญ บางอย่างเท่านั้น การพัฒนาที่ใช้งานอยู่ทั้งหมดจะมุ่งเป้าไปที่เวอร์ชัน 2.x
การอ้างอิงก่อน AndroidX
เอกสารอ้างอิง: Java
Groovy
dependencies { def work_version = "1.0.1" // (Java only) implementation "android.arch.work:work-runtime:$work_version" // Kotlin + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "android.arch.work:work-rxjava2:$work_version" // optional - Test helpers androidTestImplementation "android.arch.work:work-testing:$work_version" }
Kotlin
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
เวอร์ชัน 1.0.1
เวอร์ชัน 1.0.1
9 เมษายน 2019
WorkManager 1.0.1 เปิดตัวแล้ว รุ่นนี้เหมือนกับ 1.0.1-rc01
โปรดทราบว่าเราขอแนะนำให้ผู้ใช้อัปเดตเป็น WorkManager 2.x เนื่องจาก เราจะอัปเดตเวอร์ชัน 1.x เพียงเล็กน้อยในอนาคต นอกจากนี้ จะไม่มีการเปิดตัว API ใหม่สำหรับไลบรารี 1.x ด้วย
เวอร์ชัน 1.0.1-rc01
2 เมษายน 2019
WorkManager 1.0.1-rc01 เปิดตัวแล้ว เวอร์ชันนี้มีการแก้ไขข้อบกพร่องบางอย่าง
การแก้ไขข้อบกพร่อง
- ตอนนี้การทดสอบ Robolectric ทำงานร่วมกับ WorkManager ได้อย่างถูกต้องแล้ว b/122553577
- แก้ไขการขัดข้องในกรณีที่พบได้ยากซึ่งการติดตามข้อจำกัดไม่ได้รับการล้างใน API ก่อน JobScheduler b/129226383
- แก้ไข
StackOverflowErrorที่เกี่ยวข้องกับเชนของงานที่ยาว b/129091233
เวอร์ชัน 1.0.0
เวอร์ชัน 1.0.0
5 มีนาคม 2019
นี่คือ WorkManager เวอร์ชัน 1.0.0 ที่เสถียรแล้ว WorkManager เวอร์ชันนี้เหมือนกับเวอร์ชัน 1.0.0-rc02
เวอร์ชัน 1.0.0-rc02
21 กุมภาพันธ์ 2019
นี่คือรุ่นที่อาจได้รับการเผยแพร่รุ่นที่ 2 สำหรับ WorkManager เวอร์ชัน 1.0.0 ที่เสถียรแล้ว รุ่นนี้มีการแก้ไขข้อบกพร่อง 2 รายการ
การแก้ไขข้อบกพร่อง
Workerตอนนี้ระบบจะกำหนดเวลา b/124546316 อย่างถูกต้องหลังจากแอปพลิเคชันขัดข้องWorkerที่ส่งExceptionที่ไม่ได้ตรวจสอบจะได้รับการทำเครื่องหมายเป็นFAILEDอย่างถูกต้อง และจะไม่ทำให้กระบวนการของแอปขัดข้องอีกต่อไป
เวอร์ชัน 1.0.0-rc01
14 กุมภาพันธ์ 2019
นี่คือรุ่นที่อาจได้รับการเผยแพร่สำหรับ WorkManager เวอร์ชัน 1.0.0 ที่เสถียร รุ่นนี้มีการแก้ไขข้อบกพร่อง 1 รายการ
การแก้ไขข้อบกพร่อง
- ตอนนี้การใช้งานที่อิงตาม AlarmManager จะพิจารณา
flexwindows สำหรับ PeriodicWorkRequest อย่างถูกต้องแล้ว b/124274584
เวอร์ชัน 1.0.0-beta05
6 กุมภาพันธ์ 2019
รุ่นนี้มีการแก้ไขข้อบกพร่องบางอย่าง
การแก้ไขข้อบกพร่อง
- แก้ไขกรณีที่ใช้
JobScheduler.getPendingJob(...)ใน API 23 b/123893059 - แก้ไข
NullPointerExceptionในอุปกรณ์ที่ใช้ Android 5.1 (API ระดับ 22) หรือต่ำกว่า b/123835104
เวอร์ชัน 1.0.0-beta04
4 กุมภาพันธ์ 2019
รุ่นนี้มีการแก้ไขข้อบกพร่องบางอย่าง
การแก้ไขข้อบกพร่อง
- ปรับปรุงการตั้งเวลา PeriodicWork สำหรับการติดตั้งใช้งานที่อิงตาม AlarmManager
- แก้ไขกรณีที่ WorkManager ติดตามข้อจำกัดไม่ถูกต้องเมื่อ ใช้การติดตั้งใช้งานที่อิงตาม AlarmManager b/123379508
- แก้ไขกรณีที่ WorkManager ไม่สามารถลองทำงานอีกครั้งเมื่อกระบวนการสิ้นสุดลงเมื่อ ใช้การติดตั้งใช้งานที่อิงตาม AlarmManager b/123329850
- แก้ไขกรณีที่ทำให้ WorkManager รั่วไหล Wakelocks เมื่อใช้การติดตั้งใช้งานที่อิงตาม AlarmManager
เวอร์ชัน 1.0.0-beta03
25 มกราคม 2019
รุ่นนี้มีการแก้ไขข้อบกพร่องบางอย่าง
การแก้ไขข้อบกพร่อง
- เราได้แนะนำการถดถอย
1.0.0-beta02ซึ่งทำให้งานไม่ทำงาน อย่างถูกต้องในบางสถานการณ์ b/123211993 - แก้ไขกรณีที่การทำงานไม่เป็นไปตามเวลาการหยุดชั่วคราวอย่างถูกต้อง b/122881597
- แก้ไข
ConcurrentModificationExceptionในอุปกรณ์ที่ใช้ Android 5.1 (API or) หรือต่ำกว่า การดำเนินการนี้เป็นการแก้ไขต่อเนื่องจากใน1.0.0-beta02b/121345393 - เพิ่ม
exported=falseสำหรับคอมโพเนนต์บางอย่างในไฟล์ Manifest ที่ไม่มี คำอธิบายประกอบนี้ - รวมข้อมูลเกี่ยวกับวิธีที่ WorkManager โต้ตอบกับระบบปฏิบัติการไว้ใน เอกสารประกอบระดับแพ็กเกจ
เวอร์ชัน 1.0.0-beta02
15 มกราคม 2019
รุ่นนี้มีการแก้ไขข้อบกพร่องบางอย่าง
การแก้ไขข้อบกพร่อง
- แก้ไขกรณีขอบที่งานเป็นระยะอาจทำงานมากกว่า 1 ครั้งต่อช่วงเวลา ในอุปกรณ์ที่ใช้ 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 ใช้ - เปลี่ยนไปใช้
Roomdependency1.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เป็นResultResultตอนนี้เป็น "คลาสที่ปิดผนึก" ที่มีการใช้งานจริง 3 แบบ ซึ่งคุณรับได้ผ่านResult.success()(หรือResult.success(Data)),Result.failure()(หรือResult.failure(Data)) และResult.retry()ตอนนี้ListenableFutureของคุณจะแสดงผลเป็นResultแทนPayloadWorkerไม่มีเมธอด Getter และ Setter สำหรับเอาต์พุตDataนี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ - เพิ่ม
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)และConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)รวมถึงตัวแปรเพื่อรองรับ URI ของเนื้อหาที่ทริกเกอร์ช้าได้ดียิ่งขึ้น b/119919774 - เพิ่มตัวแปร
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)แล้ว เมธอดนี้ต้องใช้ API 26 - เพิ่มเมธอดส่วนขยาย Kotlin
Operation.await()และListenableFuture.await() - เปลี่ยนชื่อ
Operation.getException()เป็นOperation.getThrowable()แล้ว นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ ContentUriTriggersคลาสและเมธอดที่อ้างอิงถึงคลาสนี้จะไม่มีให้ใช้งานแบบสาธารณะอีกต่อไป นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ- นำเมธอด varargs ที่เหลือใน
WorkManager,WorkContinuationและOneTimeWorkRequestออกเพื่อปรับปรุง API หากต้องการแก้ไขปัญหาการบิลด์ คุณสามารถห่อหุ้ม varargs ที่มีอยู่ด้วยArrays.asList(...)เรายังคงรวมเวอร์ชันที่มีอาร์กิวเมนต์เดียวของแต่ละเมธอดไว้ นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ - นำ
WorkContinuation.combine(OneTimeWorkRequest, *)รูปแบบออกแล้ว เนื่องจาก API ที่นำเสนอมีความซับซ้อนcombineเมธอดที่มีอยู่จึงเข้าใจได้ง่ายกว่า นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
การแก้ไขข้อบกพร่อง
- การใช้งานก่อน Marshmallow มีความน่าเชื่อถือมากขึ้นในการกู้คืนจากการสิ้นสุดกระบวนการของงานที่กำลังดำเนินการอยู่
LiveDataที่สังเกตได้ผ่านobserveForeverจะได้รับการติดตามผ่าน WorkManager นี่คือการพอร์ตการแก้ไขไลบรารี Room ย้อนหลัง b/74477406Data.Builder.build()จะแสดงข้อยกเว้นหากออบเจ็กต์ที่ซีเรียลไลซ์มีขนาดเกินขนาดสูงสุด ก่อนหน้านี้เหตุการณ์นี้จะเกิดขึ้นในเธรดเบื้องหลังเท่านั้น ซึ่งคุณไม่สามารถจัดการได้อย่างเหมาะสม- แยกความแตกต่างระหว่างงานที่หยุดกับงานที่ยกเลิก
getWorkInfoById()จะแสดงWorkInfoพร้อมCANCELLEDStateในช่วงListenableWorker.onStopped() - ถือว่า
nullResultเป็นความล้มเหลวในListenableWorkerb/120362353 - การแก้ไขแบบคาดการณ์สำหรับ Shield Tablet ที่ใช้ API 24 ซึ่งบางครั้งจะแสดง
IllegalArgumentExceptionb/119484416
การเปลี่ยนแปลง API ที่ทำให้เกิดข้อขัดข้อง
- เราได้นำการรองรับ Firebase JobDispatcher ออกแล้วเนื่องจากจะเลิกใช้งานในเร็วๆ นี้ ซึ่งหมายความว่าเราจะไม่
work-firebaseอัปเดตอาร์ติแฟกต์อีกต่อไปเมื่อเข้าสู่เวอร์ชันเบต้า เราจะพิจารณาเพิ่มตัวเลือกอื่นในอนาคต - รวม
Payloadเป็นResultResultตอนนี้เป็น "คลาสที่ปิดผนึก" ที่มีการใช้งานจริง 3 แบบ ซึ่งคุณรับได้ผ่านResult.success()(หรือResult.success(Data)),Result.failure()(หรือResult.failure(Data)) และResult.retry()ตอนนี้ListenableFutureของคุณจะแสดงผลเป็นResultแทนPayloadWorkerไม่มีเมธอด Getter และ Setter สำหรับเอาต์พุตData - เพิ่มเมธอดส่วนขยาย Kotlin
Operation.await()และListenableFuture.await() - เปลี่ยนชื่อ
Operation.getException()เป็นOperation.getThrowable()แล้ว ContentUriTriggersคลาสและเมธอดที่อ้างอิงถึงคลาสนี้จะไม่มีให้ใช้งานแบบสาธารณะอีกต่อไป- นำเมธอด varargs ที่เหลือใน
WorkManager,WorkContinuationและOneTimeWorkRequestออกเพื่อปรับปรุง API หากต้องการแก้ไขปัญหาการบิลด์ คุณสามารถห่อหุ้ม varargs ที่มีอยู่ด้วย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แล้ว นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ - ตัวตั้งค่าใน
Constraintsจะไม่อยู่ใน API สาธารณะอีกต่อไป นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ WorkerParameters.getTriggeredContentUris()และWorkerParameters.getTriggeredContentAuthorities()แสดงผลอาร์เรย์ก่อนหน้านี้ ตอนนี้เมธอดเหล่านี้จะแสดงผลคอลเล็กชัน นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ- เปลี่ยนชื่อ
ListenableWorker.onStartWork()เป็นListenableWorker.startWork()นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ - ตัวสร้างสำหรับ
WorkStatusไม่ได้เป็นส่วนหนึ่งของ Public API อีกต่อไป นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ - เปลี่ยนชื่อ
Configuration.getMaxJobSchedulerID()และConfiguration.getMinJobSchedulerID()เป็นConfiguration.getMinJobSchedulerId()และConfiguration.getMaxJobSchedulerId()ตามลำดับ นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ - เพิ่ม
@NonNullคำอธิบายประกอบจำนวนมากใน API สาธารณะเพื่อปรับปรุงการยศาสตร์ของ API - เพิ่ม
WorkManager.enqueueUniqueWork()API เพื่อจัดคิวOneTimeWorkRequestที่ไม่ซ้ำกันโดยไม่ต้องสร้างWorkContinuation - ตอนนี้ตัวแปรทั้งหมดของเมธอด
enqueueและcancelในWorkManagerจะแสดงผลประเภทOperationใหม่ นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ enqueueทุกรูปแบบจะไม่ยอมรับ varargs สำหรับWorkRequestอีกต่อไป นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ โปรดใช้คอลเล็กชันแทน คุณใช้Arrays.asList()เพื่อแก้ไขโค้ดที่มีอยู่ได้ เราดำเนินการเช่นนี้เพื่อลดจำนวนพื้นผิวและเมธอดของ API- ตอนนี้การพยายาม
initializeWorkManagerมากกว่า 1 ครั้งต่อกระบวนการจะทำให้เกิดIllegalStateExceptionนี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
การแก้ไขข้อบกพร่อง
WorkRequest.Builderในอาร์ติแฟกต์work-runtime-ktxจะใช้ListenableWorkerแทน แก้ไข b/117666259- ตรวจสอบว่าเวลาเรียกใช้ครั้งถัดไปสำหรับ
PeriodicWorkเป็นเวลาในอนาคต แก้ไข b/118204399 - หลีกเลี่ยง I/O ของดิสก์ที่อาจเกิดขึ้นเมื่อใช้ 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() - ตัวสร้างสำหรับ
WorkStatusไม่ได้เป็นส่วนหนึ่งของ Public API อีกต่อไป - เปลี่ยนชื่อ
Configuration.getMaxJobSchedulerID()และConfiguration.getMinJobSchedulerID()เป็นConfiguration.getMinJobSchedulerId()และConfiguration.getMaxJobSchedulerId()ตามลำดับ - ตอนนี้ตัวแปรทั้งหมดของเมธอด
enqueueและcancelในWorkManagerจะแสดงผลประเภทOperationใหม่ enqueueทุกรูปแบบจะไม่ยอมรับ varargs สำหรับWorkRequestอีกต่อไป- ตอนนี้การพยายาม
initializeWorkManagerมากกว่า 1 ครั้งต่อกระบวนการจะทำให้เกิดIllegalStateException
เวอร์ชัน 1.0.0-alpha10
11 ตุลาคม 2018
รุ่นนี้รองรับงานแบบอะซิงโครนัสที่นักพัฒนาแอปควบคุม รุ่นนี้มีการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่น โปรดดูส่วนการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นด้านล่าง
เราคาดว่า WorkManager กำลังเข้าสู่ระยะสุดท้ายของช่วงอัลฟ่า เราคาดว่า API จะมีความเสถียรในรุ่นเบต้า ดังนั้นโปรดสละเวลาส่งความคิดเห็นในเครื่องมือติดตามปัญหา
การเปลี่ยนแปลง API
- นำ
deprecatedวิธีการและคลาสทั้งหมดก่อนหน้านี้ออก โดยเฉพาะWorkerตัวสร้างเริ่มต้น นี่เป็นการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นในระบบ - เปลี่ยนชื่อ
NonBlockingWorkerเป็นListenableWorkerซึ่งตอนนี้เป็นชั้นเรียนสาธารณะที่ไม่ได้ซ่อนและพร้อมใช้งานแล้วListenableWorkerจะให้สิทธิ์เข้าถึงเมธอดนามธรรม 1 รายการListenableFuture<Payload> onStartWork()ซึ่งจะเรียกใช้ในเทรดหลัก คุณสามารถเลือกที่จะเริ่มและประมวลผลงานแบบอะซิงโครนัสได้ เมื่อเสร็จแล้ว คุณควรจะอัปเดตListenableFutureอย่างเหมาะสม การใช้งานอ้างอิงของListenableFutureมีให้ในแพ็กเกจFuturesในalpha02(ดูส่วนWorkManagerด้านล่าง)WorkerขยายListenableWorkerและยังคงทำงานเหมือนเดิมด้วยวิธีการResult doWork()แบบนามธรรม- ย้ายบางวิธีและสมาชิกจาก
WorkerไปยังListenableWorker - ในเร็วๆ นี้เราจะจัดหาการใช้งานอ้างอิงสำหรับ
ListenableWorkerที่ใช้ Kotlin Coroutines (เมื่อเผยแพร่เวอร์ชันที่เสถียรแล้ว) และ RxJava2
- เราได้รวมอินเทอร์เฟซ
WorkerFactoryและการใช้งานจริงDefaultWorkerFactoryเข้ากับคลาสแบบนามธรรมที่ชื่อWorkerFactoryการติดตั้งใช้งานนี้ช่วยให้มั่นใจได้ว่าระบบจะเรียกใช้ลักษณะการทำงานเริ่มต้นที่อิงตามการสะท้อนเป็นความพยายามสุดท้ายสำหรับอินสแตนซ์WorkerFactoryที่ผู้ใช้สร้างขึ้น นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ - นำ
WorkManager.synchronous()และWorkContinuation.synchronous()รวมถึงเมธอดที่เกี่ยวข้องทั้งหมดออก เพิ่มListenableFuture<Void>เป็นประเภทการคืนค่าของเมธอดหลายรายการใน API นี่เป็นการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นในระบบ- ตอนนี้คุณสามารถรับและสังเกตการณ์แบบซิงโครนัสได้โดยใช้
ListenableFutureเช่นWorkManager.enqueue()เคยแสดงผลเป็นvoidแต่ตอนนี้จะแสดงผลเป็นListenableFuture<Void>คุณเรียกใช้ListenableFuture.addListener(Runnable, Executor)หรือListenableFuture.get()เพื่อเรียกใช้โค้ดได้เมื่อการดำเนินการเสร็จสมบูรณ์ - โปรดทราบว่า
ListenableFutures เหล่านี้ไม่ได้บอกว่าการดำเนินการสำเร็จหรือไม่ แต่จะบอกเพียงว่าการดำเนินการเสร็จสิ้นแล้ว คุณยังคงต้องเชื่อมโยงเมธอด WorkManager เพื่อดูข้อมูลนี้ - เราไม่สนใจการเรียก
cancel()ในออบเจ็กต์เหล่านี้ เนื่องจากทำให้เกิดความสับสนและยากต่อการให้เหตุผล (คุณกำลังยกเลิกการดำเนินการหรือผลงานที่ได้) ซึ่งเป็นไปตามFutureสัญญา - เพื่อให้สอดคล้องกับเมธอด
getStatus*แบบซิงโครนัส เราจึงได้จัดเตรียมตัวแปรListenableFutureและเปลี่ยนชื่อตัวแปรที่มีอยู่ซึ่งส่งคืนLiveDataให้มี "LiveData" เป็นส่วนหนึ่งของชื่ออย่างชัดเจน (เช่นgetStatusesByIdLiveData(UUID)) การเปลี่ยนแปลง API นี้ทำให้เกิดการเปลี่ยนแปลงที่ทำให้ใช้งานร่วมกันไม่ได้
- ตอนนี้คุณสามารถรับและสังเกตการณ์แบบซิงโครนัสได้โดยใช้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ทราบจาก alpha09 เกี่ยวกับไฟล์
androidx-annotations.proที่ซ้ำกัน คุณสามารถนำวิธีแก้ปัญหาออกจากหมายเหตุประจำรุ่นก่อนหน้าได้โดยลบexclude 'META-INF/proguard/androidx-annotations.pro'ออกจากไฟล์ Gradle - เพิ่มการกำหนดค่า ProGuard เพื่อเก็บตัวสร้าง
Workerใหม่ b/116296569 - แก้ไข
NullPointerExceptionที่อาจเกิดขึ้นREPLACEในสภาวะการแข่งขันที่งานREPLACEb/116253486 และ b/116677275 WorkContinuation.combine()ตอนนี้รับWorkContinuationอย่างน้อย 1 รายการแล้ว ไม่ใช่ 2 รายการขึ้นไป b/117266752
การเปลี่ยนแปลง API ที่ทำให้เกิดข้อขัดข้อง
- นำ
deprecatedวิธีการและคลาสทั้งหมดก่อนหน้านี้ออก โดยเฉพาะWorkerตัวสร้างเริ่มต้น - เราได้รวมอินเทอร์เฟซ
WorkerFactoryและการใช้งานจริงDefaultWorkerFactoryเข้ากับคลาสแบบนามธรรมที่ชื่อWorkerFactory - นำ
WorkManager.synchronous()และWorkContinuation.synchronous()ออกแล้ว - ตอนนี้เมธอด
WorkManager.getStatus*()จะแสดงผลเป็นListenableFutureWorkManager.getStatus*LiveData()คืนLiveData
เวอร์ชัน 1.0.0-alpha09
19 กันยายน 2018
ปัญหาที่ทราบ
หากพบปัญหา "พบไฟล์มากกว่า 1 รายการที่มีเส้นทางที่ไม่ขึ้นอยู่กับระบบปฏิบัติการ 'META-INF/proguard/androidx-annotations.pro'" โปรดใส่ข้อมูลต่อไปนี้ในไฟล์ Gradle เป็นวิธีแก้ปัญหาชั่วคราวในขณะที่เราแก้ไขปัญหาใน alpha10
Groovy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
การแก้ไขข้อบกพร่อง
- เพิ่มการแก้ไขอีกรายการที่จำเป็นสำหรับข้อผิดพลาด "100 งาน" b/115560696
- เพิ่มการแก้ไขข้อผิดพลาดข้อจำกัดของคีย์นอกเนื่องจากสภาวะการแข่งขัน b/114705286
- การเรียก
ConstraintTrackingWorker.onStopped(boolean)ที่ได้รับมอบสิทธิ์ไปยังWorkerที่เกี่ยวข้อง b/114125093 - บังคับใช้การหน่วงเวลาการหยุดชั่วคราวขั้นต่ำที่ถูกต้องสำหรับ Firebase JobDispatcher b/113304626
- การรับประกันการทำงานแบบหลายเธรดที่ได้รับการปรับปรุงภายในไลบรารี
- แก้ไขปัญหาที่อาจเกิดขึ้นกับการกรองข้อมูลที่ซ้ำกัน
LiveDataภายใน
การเปลี่ยนแปลง API
- ตอนนี้คุณสร้างอินสแตนซ์
Workerของตัวเองได้ที่รันไทม์โดยระบุWorkerFactoryเป็นส่วนหนึ่งของWorkManager.ConfigurationFactory สำรองคือDefaultWorkerFactoryซึ่งตรงกับลักษณะการทำงานของ WorkManager เวอร์ชันก่อนหน้า- ตอนนี้เราได้ทำเครื่องหมายว่าเลิกใช้ตัวสร้างเริ่มต้นสำหรับ
WorkerและNonBlockingWorkerแล้ว โปรดใช้ตัวสร้างใหม่ (Worker(Context, WorkerParameters)) และเรียกใช้super(Context, WorkerParameters)เนื่องจาก WorkManager เวอร์ชันในอนาคตจะนำตัวสร้างเริ่มต้นออก
- ตอนนี้เราได้ทำเครื่องหมายว่าเลิกใช้ตัวสร้างเริ่มต้นสำหรับ
- เราได้เริ่มใช้
ListenableFutureอาร์ติแฟกต์ใหม่เป็นการภายใน (ไม่มีการขึ้นต่อกันของ Guava) เราจะเปิดตัว ListenableFutures ใน API ในรุ่นที่กำลังจะเปิดตัว การเปลี่ยนแปลงนี้จะรองรับการเลิกซ่อนNonBlockingWorkerในที่สุด - เพิ่มความสามารถในการทริกเกอร์งานที่กำหนดเวลาไว้ใน
TestDriverผ่านTestDriver.setInitialDelayMet(UUID)และTestDriver.setPeriodDelayMet(UUID)b/113360060
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
- ตัวสร้าง
WorkerและNonBlockingWorkerเริ่มต้นถูกเลิกใช้งานแล้ว โปรดย้ายข้อมูลไปยังตัวสร้างใหม่โดยเร็วที่สุด เวอร์ชันในอนาคตจะนำตัวสร้างเริ่มต้นออก
เวอร์ชัน 1.0.0-alpha08
27 สิงหาคม 2018
การแก้ไขข้อบกพร่อง
- ติดป้ายกำกับคอมโพเนนต์ WorkManager อย่างชัดเจนว่าไม่ทราบการบูตโดยตรงเพื่อไม่ให้คอมโพเนนต์เริ่มทำงานระหว่างการบูตโดยตรง ในอนาคตเราจะให้บริการ WorkManager เวอร์ชันที่รองรับการบูตโดยตรง b/112665532
- แก้ไขปัญหาที่งานที่ลองอีกครั้งไม่ทำงาน b/112604021
- แก้ไขงานที่ทำเป็นระยะๆ ไม่ทำงานซ้ำๆ (เกี่ยวข้องกับปัญหาข้างต้น) b/112859683
- ใช้นโยบายการหยุดชั่วคราวแบบเอ็กซ์โปเนนเชียลเมื่อกระบวนการของแอปทํางานอยู่แล้ว
- แก้ไขข้อความข้อยกเว้นใน
Dataเพื่อระบุว่าขีดจำกัดคือ 10 KB - ลดค่าสูงสุดของ
Configuration.setMaxSchedulerLimit(int)เป็น 50 เพื่อพิจารณาเวลาในการตอบสนองบางอย่างในการประมวลผลJobSchedulerให้เสร็จสมบูรณ์ b/112817355
เวอร์ชัน 1.0.0-alpha07
16 สิงหาคม 2018
การแก้ไขข้อบกพร่อง
- แก้ไขคำค้นหา SQL ที่อาจมีขีดจำกัดที่เป็นลบซึ่งอาจแสดงผลลัพธ์ได้ไม่จำกัด
- ตอนนี้งานที่ดำเนินการเสร็จแล้วจะยกเลิกสำเนาที่รอดำเนินการทั้งหมดของงานนั้นในตัวจัดตารางเวลาอื่นๆ อย่างถูกต้อง ซึ่งทำให้มีงานเกินขีดจำกัดที่
JobSchedulerงาน b/111569265 - แก้ไข
ConcurrentModificationExceptionในConstraintTrackerb/112272753 - เปลี่ยนคำอธิบายประกอบประเภทการคืนค่าของ
Data.getBooleanArray(String)และData.getIntArray(String)เป็น@Nullableแทน@NonNullb/112275229
การเปลี่ยนแปลง API
- ตอนนี้
Workerได้ขยายเวลาการเรียนการสอนในชั้นเรียนใหม่NonBlockingWorkerการดำเนินการนี้จะไม่ส่งผลต่อการใช้งานปัจจุบัน ในอนาคตNonBlockingWorkerจะกลายเป็นเอนทิตีที่รองรับอย่างเต็มรูปแบบสำหรับโซลูชันการแยกเธรดที่กำหนดเอง - เปลี่ยนคำอธิบายประกอบประเภทการคืนค่าของ
Data.getBooleanArray(String)และData.getIntArray(String)เป็น@Nullableแทน@NonNullb/112275229 - ส่วนขยาย Kotlin: เลิกใช้งาน
Map.toWorkData()และเพิ่มworkDataOf(vararg Pair<String, Any?>)ระดับบนสุดเพื่อให้สอดคล้องกับ API ที่มีอยู่มากขึ้น
เวอร์ชัน 1.0.0-alpha06
1 สิงหาคม 2018
การแก้ไขข้อบกพร่อง
- ป้องกันการล็อกฐานข้อมูลเมื่อกำหนดเวลางาน b/111801342
- แก้ไขข้อบกพร่องที่ทำให้
PeriodicWorkไม่ทำงานตามกำหนดเวลาเมื่ออยู่ในโหมดพักเครื่อง b/111469837 - แก้ไข Race Condition เมื่อติดตามข้อจำกัดซึ่งทำให้
WorkManagerขัดข้อง googlecodelabs/android-workmanager/issues/56 - สร้าง
WorkRequestที่ไม่ซ้ำกันเมื่อใช้WorkRequest.Builder#build()b/111408337 - เปิดใช้
RescheduleReceiverเฉพาะเมื่อมีWorkRequestที่ต้องการใช้ b/111765853
เวอร์ชัน 1.0.0-alpha05
24 กรกฎาคม 2018
การเปลี่ยนแปลง API
- ตอนนี้
WorkManager.getInstance()มีคำอธิบายประกอบเป็น@NonNullแทน@Nullableแล้ว แต่หากไม่ได้เริ่มต้น Singleton อย่างถูกต้องในกรณีของการเริ่มต้นด้วยตนเอง เมธอดจะส่งIllegalStateExceptionนี่คือการเปลี่ยนแปลง API ที่ทำให้เกิดข้อผิดพลาด - เพิ่ม API ใหม่
Configuration.Builder.setMinimumLoggingLevel(int)ซึ่งควบคุมความละเอียดของ WorkManager ได้ โดยค่าเริ่มต้น WorkManager จะบันทึกLog.INFOขึ้นไป - เปลี่ยนลายเซ็นของ
Data.getString()เพื่อไม่ให้ใช้ค่าเริ่มต้นอีกต่อไป (ค่าเริ่มต้นคือnullโดยนัย) การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลง API ที่ทำให้เกิดข้อขัดข้อง - ทำเครื่องหมายบางวิธีที่จำเป็นสำหรับการใช้งานภายในเท่านั้นเป็น
@hideซึ่งรวมถึงตัวสร้างConstraints,Data.toByteArray()และData.fromByteArray(byte[])นี่เป็นการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นในระบบ
การแก้ไขข้อบกพร่อง
- WorkManager จะไม่เรียกใช้งานในกรณีที่ทราบว่ามีการสำรองข้อมูลอัตโนมัติอีกต่อไป ซึ่งอาจทำให้เกิดข้อขัดข้อง b/110564377
- แก้ไขการตั้งเวลา
PeriodicWorkRequestซ้ำเมื่อใช้JobSchedulerb/110798652 - แก้ไขปัญหาที่
PeriodicWorkRequestไม่ทำงานอย่างถูกต้องหลังจากอุปกรณ์เข้าสู่โหมดพัก b/111469837 - แก้ไขปัญหาความล่าช้าในช่วงแรกเมื่อใช้ Firebase JobDispatcher b/111141023
- แก้ไขปัญหาการแข่งขันและปัญหาด้านเวลาที่อาจเกิดขึ้น
- ปลดปล่อย
BroadcastReceiverที่ไม่ได้ใช้แล้วอย่างถูกต้อง - เพิ่มประสิทธิภาพการกำหนดเวลาใหม่เมื่อแอปรีสตาร์ทหลังจากถูกบังคับปิด
- อนุญาตให้เรียกใช้
TestScheduler.setAllConstraintsMet(UUID)ก่อนหรือหลังการจัดคิวWorkRequestที่ระบุ b/111238024
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
- ตอนนี้
WorkManager.getInstance()มีคำอธิบายประกอบเป็น@NonNullแทน@Nullableแล้ว - เปลี่ยนลายเซ็นของ
Data.getString()เพื่อไม่ให้ใช้ค่าเริ่มต้นอีกต่อไป (ค่าเริ่มต้นคือnull) - ทำเครื่องหมายบางวิธีที่จำเป็นสำหรับการใช้งานภายในเท่านั้นเป็น
@hideซึ่งรวมถึงตัวสร้างConstraints,Data.toByteArray()และData.fromByteArray(byte[])
เวอร์ชัน 1.0.0-alpha04
26 มิถุนายน 2018
การแก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะกำหนดเวลา
PeriodicWorkRequestใหม่ได้อย่างถูกต้องเมื่อใช้การติดตั้งใช้งานที่อิงตามAlarmManager - แก้ไข ANR ที่อาจเกิดขึ้นเมื่อกำหนดเวลาผู้ปฏิบัติงานทั้งหมดใหม่หลังจากบังคับหยุดหรือรีบูต b/110507716
- เพิ่มคำอธิบายประกอบเกี่ยวกับค่า Null ให้กับ API ของ WorkManager ต่างๆ b/110344065
- บันทึกข้อยกเว้นที่ตรวจไม่พบซึ่งเกิดขึ้นระหว่างการดำเนินการของ Worker b/109900862
- อนุญาตการย้ายข้อมูลฐานข้อมูลที่ทำลายล้างในกรณีที่คุณตัดสินใจที่จะย้อนกลับไปใช้ WorkManager เวอร์ชันเก่า b/74633270
- แก้ไขการทำงานล้มเหลวในการย้ายข้อมูลหากมีการสร้างแท็กโดยนัยที่ซ้ำกัน นี่เป็นปัญหาที่พบได้ยากมาก ซึ่งจะเกิดขึ้นก็ต่อเมื่อคุณใช้รูปแบบแท็กโดยนัยเดียวกันด้วยตนเองเท่านั้น
เวอร์ชัน 1.0.0-alpha03
19 มิถุนายน 2018
การแก้ไขข้อบกพร่อง
แก้ไข Race Condition ในการติดตั้งใช้งานที่อิงตาม
AlarmManagerb/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/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)ช่วยให้คุณจัดคิวPeriodicWorkRequestที่ไม่ซ้ำกันได้ b/79600647WorkManager.cancelAllWork()จะยกเลิกWorkerทั้งหมด ไลบรารีที่ขึ้นอยู่กับWorkManagerสามารถค้นหาเวลาที่เรียกใช้เมธอดนี้ล่าสุดได้โดยใช้WorkManager.getLastCancelAllTimeMillis()เพื่อล้างสถานะภายในเพิ่มเติม- เพิ่ม
WorkManager.pruneWork()เพื่อนำงานที่เสร็จสมบูรณ์แล้วออกจากฐานข้อมูลภายใน b/79950952, b/109710758
การเปลี่ยนแปลงลักษณะการทำงาน
- เพิ่มแท็กโดยนัยสำหรับ
WorkRequestทั้งหมด ซึ่งเป็นชื่อคลาสที่มีคุณสมบัติครบถ้วนสำหรับWorkerซึ่งช่วยให้สามารถนำWorkRequestออกได้โดยไม่มีtagหรือเมื่อไม่มีidb/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
- ย้ายการล้าง Wake Lock ที่เชื่อมโยงกับ
Workerไปยังเธรดเบื้องหลัง - ตอนนี้การติดตั้งใช้งาน
AlarmManagerจะล้างข้อมูลอย่างถูกต้องเมื่อการทำงานที่รอดำเนินการทั้งหมดเสร็จสมบูรณ์ - แก้ไขการค้นหา SQL ในการล้างข้อมูลซึ่งส่งผลต่อภาษาที่ไม่ใช่ภาษาอังกฤษ b/80065360
- เพิ่มการรองรับ
floatในDatab/79443878 - ตอนนี้
Data.Builder.putAll()จะแสดงอินสแตนซ์ของBuilderb/79699162 - Javadoc และการแก้ไขเพิ่มเติมในเอกสารประกอบ b/79691663
การเปลี่ยนแปลง API
Workerสามารถตอบสนองต่อการหยุดได้Worker.isStopped()ใช้เพื่อตรวจสอบว่าWorkerหยุดทำงานแล้วหรือไม่Worker.onStopped()สามารถใช้เพื่อดำเนินการล้างข้อมูลแบบเบาได้Worker.getTags()API จะแสดงผลSetของแท็กที่เชื่อมโยงกับWorker- เพิ่มโอเวอร์โหลด
javax.time.Durationสำหรับ API ที่ใช้ระยะเวลาและTimeUnitร่วมกัน@RequiresApi(26)เป็นผู้ดูแล - ย้ายส่วนขยาย
WorkManagerจากแพ็กเกจandroidx.work.ktxไปยังแพ็กเกจandroidx.workแล้ว ส่วนขยายเดิมจะเลิกใช้งานและจะนำออกในเวอร์ชันถัดไป Configuration.withExecutor()เลิกใช้งานแล้ว โปรดใช้Configuration.setExecutor()แทน
เวอร์ชัน 1.0.0-alpha01
8 พฤษภาคม 2018
WorkManager ช่วยให้การกำหนดเวลาและการดำเนินการ
งานในเบื้องหลังที่รับประกันและคำนึงถึงข้อจำกัดง่ายขึ้น รุ่นแรกนี้คือ 1.0.0-alpha01