WorkManager
อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | เวอร์ชันอัลฟ่า |
---|---|---|---|---|
23 เมษายน 2025 | 2.10.1 | - | - | - |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มการพึ่งพา WorkManager คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ โดยทำดังนี้
เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่คุณต้องการในไฟล์ build.gradle
สำหรับแอปหรือโมดูล
ดึงดูด
dependencies { def work_version = "2.10.1" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.10.1" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
ดูข้อมูลเกี่ยวกับการใช้ส่วนขยาย Kotlin ได้ที่เอกสารประกอบ ktx
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ได้ โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมีแนวคิดในการปรับปรุงคลังนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดยคลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของเครื่องมือติดตามปัญหา
เวอร์ชัน 2.10
เวอร์ชัน 2.10.1
23 เมษายน 2025
androidx.work:work-*:2.10.1
ได้รับการปล่อยแล้ว เวอร์ชัน 2.10.1 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ลดโอกาสที่
TooManyRequestsException
จะแสดงขึ้นจากการลงทะเบียนNetworkCallback
ของWorkManager
ที่ใช้สำหรับการติดตามข้อจำกัด (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
เพื่อควบคุมตัวจัดเตรียมงานที่เรียกใช้CoroutineWorker
- นักพัฒนาซอฟต์แวร์สามารถระบุ
NetworkRequest
เป็นข้อจำกัดสำหรับเวิร์กเกอร์ผ่านเมธอดConstraints.setRequiredNetworkRequest
วิธีนี้ช่วยให้คุณควบคุมเครือข่ายที่ควรเรียกใช้ผู้ปฏิบัติงานรายนี้ได้ละเอียดยิ่งขึ้น - ตอนนี้
WorkManager
2.10.0 คอมไพล์ด้วย SDK 35 และมีการเปลี่ยนแปลงต่างๆ เพื่อให้ใช้งานร่วมกับ SDK 35 ได้
เวอร์ชัน 2.10.0-rc01
24 ตุลาคม 2024
androidx.work:work-*:2.10.0-rc01
ได้รับการปล่อยแล้ว เวอร์ชัน 2.10.0-rc01 มีการคอมมิตเหล่านี้
เวอร์ชัน 2.10.0-beta01
2 ตุลาคม 2024
androidx.work:work-*:2.10.0-beta01
ได้รับการปล่อยแล้ว เวอร์ชัน 2.10.0-beta01 มีการคอมมิตเหล่านี้
เวอร์ชัน 2.10.0-alpha04
18 กันยายน 2024
androidx.work:work-*:2.10.0-alpha04
ได้รับการปล่อยแล้ว เวอร์ชัน 2.10.0-alpha04 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มเหตุผลในการหยุด
STOP_REASON_FOREGROUND_SERVICE_TIMEOUT
สำหรับกรณีที่ระบบหยุดผู้ปฏิบัติงานที่ทำงานอยู่เบื้องหน้าเนื่องจากหมดเวลาดำเนินการโดยอิงตามประเภทบริการที่ทำงานอยู่เบื้องหน้า (Ibd0af)
เวอร์ชัน 2.10.0-alpha03
4 กันยายน 2024
androidx.work:work-*:2.10.0-alpha03
ได้รับการปล่อยแล้ว เวอร์ชัน 2.10.0-alpha03 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มแท็กการติดตามไปยังงานจาก
WorkManager
ซึ่งทําให้ "adb shell dumpsys jobscheduler" เข้าใจง่ายขึ้นมากเนื่องจากจะมีชื่อของ Worker ที่กําลังดําเนินการ นอกจากนี้ ระบบยังเพิ่มส่วนการติดตามรอบๆ พื้นที่หลักของWorkManager
ด้วย
การเปลี่ยนแปลง API
- ตอนนี้ WorkManager 2.10.0 คอมไพล์ด้วย SDK 35 แล้ว
- แก้ไขเวิร์กเกอร์ที่ทำงานอยู่เบื้องหน้าประเภท "บริการระยะสั้น" และ "การซิงค์ข้อมูล" ที่หมดเวลาและทำให้เกิด ANR เมื่อ
WorkManager
ไม่ได้เรียกใช้stopSelf()
การแก้ไขนี้มีผลกับอุปกรณ์ที่ใช้ API 34 และ 35 ที่มีบริการที่ทำงานอยู่เบื้องหน้าเท่านั้น (ca06b2, b/364508145) WorkerParameters
API ใหม่ที่ช่วยให้เปลี่ยนกระบวนการระยะไกลที่Worker
เชื่อมโยงได้เมื่อใช้WorkerFactory
(Ibdc8a, Ie8a90, I7373f)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องที่เกิดจาก
WorkManager
พยายามรีสตาร์ทเวิร์กเกอร์ที่ทำงานเป็นเวลานาน (เช่น เวิร์กเกอร์ที่ทำงานอยู่เบื้องหน้า) เมื่องานประเภทที่ทำงานอยู่เบื้องหน้ามีสิทธิ์เบื้องต้นของ Android 14 ที่ถูกเพิกถอน (b/333957914) - นำการระบุการเข้าถึง API ของแพลตฟอร์มใหม่ด้วยตนเองออกแล้ว เนื่องจากการดำเนินการนี้จะทําโดยอัตโนมัติผ่านโมเดล API เมื่อใช้ R8 กับ AGP 7.3 ขึ้นไป (เช่น R8 เวอร์ชัน 3.3) และสำหรับบิลด์ทั้งหมดเมื่อใช้ AGP 8.1 ขึ้นไป (เช่น D8 เวอร์ชัน 8.1) เราขอแนะนำให้ลูกค้าที่ไม่ได้ใช้ AGP อัปเดตเป็น D8 เวอร์ชัน 8.1 ขึ้นไป ดูบทความนี้สำหรับรายละเอียดเพิ่มเติม (Ia60e0, b/345472586)
เวอร์ชัน 2.10.0-alpha02
17 เมษายน 2024
androidx.work:work-*:2.10.0-alpha02
ได้รับการปล่อยแล้ว เวอร์ชัน 2.10.0-alpha02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มความสามารถในการส่งออกช่วงการติดตามผ่าน
@RestrictTo
Tracer
ที่กําหนดค่าได้ในWorkManager
(I17d7f, b/260214125) - เพิ่ม
Configuration.workerCoroutineContext
เพื่อควบคุมตัวจัดเตรียมงานที่เรียกใช้CoroutineWorker
ซึ่งจะช่วยหลีกเลี่ยงการใช้Dispatchers.Default
ในWorkManager
ได้อย่างสมบูรณ์ (Icd1b7) - เพิ่มตัวแฮนเดิลข้อยกเว้นที่กําหนดเองสําหรับผู้ดําเนินการ (Ib1b74, b/261190695)
- ตอนนี้คุณสร้าง
OneTimeWorkRequest.Builder
และPeriodicWorkRequest.Builder
ด้วยKClass
แทนClass
ได้แล้วval request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()
(Ib55f6) - ย้ายข้อมูลชั้นเรียน
WorkManager
ไปยัง Kotlin แล้ว ตอนนี้เมธอดที่แสดงผลLiveData
,ListenableFuture
หรือFlow
จะแสดงข้อมูลเกี่ยวกับความสามารถในการเป็น Null ที่ถูกต้อง ซึ่งอาจต้องมีการแก้ไขซอร์สโค้ดของลูกค้าหากการคาดคะเนเกี่ยวกับ Nullability ในโค้ดนั้นไม่ถูกต้อง (If6757)
เวอร์ชัน 2.10.0-alpha01
24 มกราคม 2024
androidx.work:work-*:2.10.0-alpha01
ได้รับการปล่อยแล้ว เวอร์ชัน 2.10.0-alpha01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- นักพัฒนาซอฟต์แวร์สามารถระบุ
NetworkRequest
เป็นข้อจำกัดสำหรับเวิร์กเกอร์ผ่านเมธอดConstraints.setRequiredNetworkRequest
วิธีนี้ช่วยให้คุณควบคุมเครือข่ายที่ควรเรียกใช้ผู้ปฏิบัติงานรายนี้ได้ละเอียดยิ่งขึ้น
การเปลี่ยนแปลง API
- การเพิ่มความสามารถในการระบุ
NetworkRequest
เป็นข้อจำกัด (Id98a1, b/280634452)
เวอร์ชัน 2.9
เวอร์ชัน 2.9.1
7 สิงหาคม 2024
androidx.work:work-*:2.9.1
ได้รับการปล่อยแล้ว เวอร์ชัน 2.9.1 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องที่เกิดจาก
WorkManager
การพยายามรีสตาร์ทเวิร์กเกอร์ที่ทำงานเป็นเวลานาน (เช่น เวิร์กเกอร์ที่ทำงานอยู่เบื้องหน้า) เมื่องานประเภทที่ทำงานอยู่เบื้องหน้ามีสิทธิ์เบื้องต้นของ Android 14 ที่ถูกเพิกถอน (b/333957914)
เวอร์ชัน 2.9.0
29 พฤศจิกายน 2023
androidx.work:work-*:2.9.0
ได้รับการปล่อยแล้ว เวอร์ชัน 2.9.0 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.8.0
- การสังเกตการณ์ผ่าน
Flow
ตอนนี้คุณสามารถดูความคืบหน้าของแรงงานผ่านWorkManager.getWorkInfosFlow
ของ Flow และวิธีการที่คล้ายกันได้แทนLiveData
- ตอนนี้
WorkManager
จะแสดงคำแนะนำเกี่ยวกับสาเหตุที่หยุดงานก่อนหน้านี้ โดยสามารถค้นหาได้จากตัวผู้ปฏิบัติงานเองผ่านเมธอดgetStopReason()
หรือจากWorkInfo
ผ่านgetStopReason()
- กำหนดเวลาผู้ปฏิบัติงานตามรอบได้อย่างแม่นยำผ่าน
setNextScheduleTimeOverride
ซึ่งช่วยให้สามารถคํานวณกำหนดการทํางานเป็นระยะถัดไปแบบไดนามิกได้ ซึ่งสามารถใช้เพื่อติดตั้งใช้งานฟีเจอร์ขั้นสูง เช่น เวลารีเฟรชแบบปรับเปลี่ยนได้ ลักษณะการลองอีกครั้งที่กําหนดเอง หรือทําให้โปรแกรมทํางานของฟีดข่าวทํางานก่อนที่ผู้ใช้จะตื่นขึ้นทุกเช้าโดยไม่เกิดความคลาดเคลื่อน คุณควรใช้ExistingPeriodicWorkPolicy.UPDATE
กับเทคนิคเหล่านี้เพื่อหลีกเลี่ยงการยกเลิกผู้ดําเนินการที่กำลังทํางานอยู่ขณะกําหนดเวลาผู้ดําเนินการถัดไป - การทดสอบ WorkManager กับการจับคู่การแยกชุดข้อความในเวอร์ชันที่ใช้งานจริง
ExecutorsMode.PRESERVE_EXECUTORS
สามารถใช้ในinitializeTestWorkManager
เพื่อเก็บรักษาผู้ดำเนินการที่ตั้งไว้ในConfiguration
และใช้เธรดหลักจริง - Coroutines API เช่น
CoroutineWorker
ได้ย้ายจากอาร์ติแฟกต์เพิ่มเติม work-runtime-ktx ไปยังอาร์ติแฟกต์หลัก work-runtime แล้ว ตอนนี้ work-runtime-ktx ว่างเปล่า
การเปลี่ยนแปลง API
- เพิ่ม
stopReason
ไปยังWorkInfo
แล้ว ซึ่งจะทำให้stopReason
พร้อมใช้งานหลังจากที่ผู้ปฏิบัติงานทำงานแล้ว ซึ่งอาจเป็นประโยชน์ในการรายงานstopReason
ในลักษณะที่ใช้งานได้ เนื่องจากเมื่อหยุดการทํางานของ WOrker แล้ว แอปเองก็อาจหยุดทำงานได้อย่างรวดเร็ว (I21386) - อนุญาตให้ตั้งค่า
Clock
ผ่านการกำหนดค่าและใช้เพื่อกำหนดลำดับการดำเนินการของการทดสอบแรงงาน (Ic586e) - มีการเพิ่มวิธีการ
getStopReason()
ลงในListenableWorker
ซึ่งให้คำแนะนำเกี่ยวกับสาเหตุที่หยุดการทำงานของผู้ปฏิบัติงาน (I07060) - เพิ่ม
WorkManagerTestInitHelper#closeWorkDatabase()
เพื่อหลีกเลี่ยงคำเตือนของ Closeguard เกี่ยวกับทรัพยากรที่รั่วไหล (Ia8d49) - ตอนนี้ตัวสร้างของ
WorkInfo
เป็นแบบสาธารณะแล้ว ซึ่งอาจเป็นประโยชน์ในการทดสอบ (Ia00b6, b/209145335) - ตอนนี้
work-runtime-ktx
ว่างเปล่าแล้วCoroutineWorker
และยูทิลิตีอื่นๆ สำหรับ Kotlin โดยเฉพาะจะอยู่ในอาร์ติแฟกต์รันไทม์หลัก (I71a9a) - เพิ่มเมธอด
setNextScheduleTimeOverride
ซึ่งช่วยให้ตั้งค่ากำหนดเวลาการทำงานเป็นระยะได้อย่างแม่นยำ (I3b4da) - เพิ่ม
getNextScheduleTimeMillis
เพื่อรับข้อมูลรันไทม์ที่กำหนดเวลาไว้ลงในWorkInfo
(I797e4) - ระบบจะเพิ่มข้อมูลความล่าช้าเริ่มต้นและความถี่ลงใน
WorkInfo
(I52f2f) - เพิ่มเมธอด observe workers via Flows ผ่านเมธอด
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) - เพิ่มคำอธิบายประกอบ
@RequiresApi(...)
ที่ขาดหายไปลงในตัวสร้างและพร็อพเพอร์ตี้ของConstraints
ตอนนี้คำอธิบายประกอบเหล่านี้สอดคล้องกับคำอธิบายประกอบที่เกี่ยวข้องในเซตเตอร์ของ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
- เพิ่มค่าคงที่สำหรับเหตุผลในการหยุดที่
WorkInfo.stopReason
และListenableWorker.stopReason
แสดง (I0cc00)
เวอร์ชัน 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
ในลักษณะที่ใช้งานได้ เนื่องจากเมื่อหยุดการทํางานของ W worker แล้ว แอปเองก็อาจหยุดทํางานอย่างรวดเร็ว (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 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- การสังเกตการณ์ผ่าน
Flow
ตอนนี้คุณสามารถดูความคืบหน้าของแรงงานผ่านWorkManager.getWorkInfosFlow
ของ Flow และวิธีการที่คล้ายกันได้แทนLiveData
- กำหนดเวลาผู้ปฏิบัติงานตามรอบได้อย่างแม่นยำผ่าน
setNextScheduleTimeOverride
ซึ่งช่วยให้คำนวณกำหนดการทํางานเป็นระยะถัดไปแบบไดนามิกได้ ซึ่งสามารถใช้เพื่อติดตั้งใช้งานฟีเจอร์ขั้นสูง เช่น เวลารีเฟรชแบบปรับเปลี่ยนได้ ลักษณะการลองอีกครั้งที่กําหนดเอง หรือทําให้โปรแกรมทํางานของฟีดข่าวทํางานก่อนที่ผู้ใช้จะตื่นทุกเช้าโดยไม่มีการเลื่อนเวลา คุณควรใช้ExistingPeriodicWorkPolicy.UPDATE
กับเทคนิคเหล่านี้เพื่อหลีกเลี่ยงการยกเลิกเวิร์กเกอร์ที่ทำงานอยู่ขณะกำหนดเวลาเวิร์กเกอร์ถัดไป WorkManager
กำลังทดสอบกับการผลิตการจับคู่การแยกชุดข้อความExecutorsMode.PRESERVE_EXECUTORS
สามารถใช้เพื่อเก็บรักษาผู้ดำเนินการที่ตั้งค่าไว้ในConfiguration
และใช้เธรดหลักจริง- ย้าย API ของ Coroutine เช่น
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) - เพิ่มเมธอด observe workers via Flows ผ่านเมธอด
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
ซึ่งก่อนหน้านี้จัดการการออกอากาศพร้อมกัน 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
ที่มีอยู่ แต่รบกวนน้อยกว่า จะไม่ยกเลิกผู้ทํางานหากทํางานอยู่ในปัจจุบันและจะเก็บเวลาจัดคิวไว้ นั่นคือระบบจะคํานวณความล่าช้าและระยะเวลาเริ่มต้นจากเวลาจัดคิวเดิม ไม่ใช่เวลาอัปเดต เราเลิกใช้งานREPLACE
เพื่อลดความสับสนระหว่างREPLACE
และUPDATE
ที่มีชื่อคล้ายกันมาก หากยังคงต้องการเก็บความหมายเดิมของREPLACE
ไว้ คุณสามารถใช้CANCEL_AND_REENQUEUE
ที่เพิ่มเข้ามาใหม่ซึ่งเหมือนกับREPLACE
(I985ed, b/219446409) - เพิ่มความสามารถในการขัดจังหวะข้อยกเว้นการกําหนดเวลาโดยระบุ
Consumer<Throwable>
ผ่าน setSchedulingExceptionHandler) - เพิ่มความสามารถในการระบุ
Consumer<Throwable>
ผ่าน setInitializationExceptionHandler เพื่อระบุว่ามีปัญหาเกิดขึ้นเมื่อพยายามเริ่มต้น WorkManager หรือไม่ - ย้ายตัวช่วยแบบแทรกสำหรับ
OneTimeWorkRequest
และPeriodicWorkRequest
จากandroidx.work:work-runtime-ktx
ไปยังandroidx.work:work-runtime
(I0010f, b/209145335) - เพิ่มเมธอดตัวช่วย
WorkQuery.fromIds
,WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
,WorkQuery.fromTags
เพื่อสร้างWorkQuery
โดยตรง (b/199919736) (If48f2, b/199919736) - เพิ่ม
getForegroundInfo
ไปยังWorker
แล้ว (Ic1ead) - ตอนนี้
RxWorker
ทั้งสำหรับ RxJava 2 และ RxJava 3 มีsetForeground
ที่แสดงผลCompletable
ซึ่งสามารถใช้แทนsetForegroundInfoAsync
ที่แสดงผลListenableFuture
RxWorker
ทั้งสำหรับ RxJava 2 และ RxJava 3 มีgetForegroundInfo
ที่แสดงผลSingle
ซึ่งสามารถใช้แทนgetForegroundInfoAsync
ที่แสดงผลListenableFuture
(b/203851459)- ตอนนี้คุณสร้างข้อจำกัดได้โดยตรงแทนที่จะใช้
Constraints.Builder
ซึ่งสะดวกสำหรับผู้ใช้ Kotlin (Idc390, b/137568653) - เพิ่มความสามารถในการตรวจสอบว่า
WorkManager
ได้รับการเริ่มต้นแล้วหรือยัง นอกจากนี้ เรายังได้เพิ่มgetConfiguration()
API ใหม่สําหรับนักพัฒนาไลบรารีเพื่อให้รับการกําหนดค่าที่เริ่มต้นWorkManager
ด้วย (I6eff3, b/212300336)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาเกี่ยวกับตัวจัดตารางแบบโลภที่ป้องกันไม่ให้ผู้ปฏิบัติงานทำงานทันทีเมื่ออยู่ภายใต้ภาระงาน (I9686b, b/248111307)
- เพิ่ม
@RequiresPermission
ลงใน API ที่ต้องให้สิทธิ์POST_NOTIFICATIONS
ใน SDK 33 ขึ้นไป (Ie542e, b/238790278) - เผยแพร่การยกเลิกใน
CoroutineScope
ไปยังListenableFuture
เมื่อใช้suspendCancellableCoroutine
เวอร์ชัน 2.8.0-rc01
7 ธันวาคม 2022
androidx.work:work-*:2.8.0-rc01
ได้รับการปล่อยแล้ว เวอร์ชัน 2.8.0-rc01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ไม่มีฟีเจอร์ใหม่ในรุ่นนี้ เวอร์ชันนี้เป็นการอัปเกรดเวอร์ชันหลักๆ
เวอร์ชัน 2.8.0-beta02
9 พฤศจิกายน 2022
androidx.work:work-*:2.8.0-beta02
ได้รับการปล่อยแล้ว เวอร์ชัน 2.8.0-beta02 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขวิธีการ
equals
ในWorkInfo
ซึ่งก่อนหน้านี้ไม่ได้พิจารณาข้อมูลรุ่นใหม่ (4977cc)
เวอร์ชัน 2.8.0-beta01
5 ตุลาคม 2022
androidx.work:work-*:2.8.0-beta01
ได้รับการปล่อยแล้ว เวอร์ชัน 2.8.0-beta01 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาเกี่ยวกับตัวจัดตารางแบบโลภที่ป้องกันไม่ให้ผู้ปฏิบัติงานทำงานทันทีเมื่ออยู่ภายใต้ภาระงาน (I9686b, b/248111307)
เวอร์ชัน 2.8.0-alpha04
7 กันยายน 2022
androidx.work:work-*:2.8.0-alpha04
ได้รับการปล่อยแล้ว เวอร์ชัน 2.8.0-alpha04 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
WorkerInfo.getGeneration()
และWorkerParameters.getGeneration()
ที่แสดงผลรุ่นของแรงงาน เวิร์กเกอร์จะมีหลายรุ่นหากมีการอัปเดตผ่านWorkManager.updateWork
หรือWorkManager.enqueueUniquePeriodicWork
โดยใช้ExistingPeriodicWorkPolicy.UPDATE
โปรดทราบว่าหากขณะนี้มีการเรียกใช้ Executor อยู่ วิธีการนี้อาจแสดงผลลัพธ์ที่ใหม่กว่า Executor ที่ทำงานอยู่ในปัจจุบัน หากมีการอัปเดตระหว่างที่ Executor ทำงาน (I665c5, b/219446409) (I128a9, b/219446409) - เพิ่ม
InitializationExceptionHandler
ซึ่งเป็นตัวแฮนเดิลข้อยกเว้นที่ใช้เพื่อระบุว่ามีปัญหาเกิดขึ้นเมื่อพยายามเริ่มต้นWorkManager
หรือไม่ (I061de)
เวอร์ชัน 2.8.0-alpha03
10 สิงหาคม 2022
androidx.work:work-*:2.8.0-alpha03
ได้รับการปล่อยแล้ว เวอร์ชัน 2.8.0-alpha03 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มความสามารถในการอัปเดต
WorkRequests
ในลักษณะที่ไม่รบกวน โดยยังคงเวลาจัดคิวเดิม การต่อสาย ฯลฯ ไว้ ดูรายละเอียดเพิ่มเติมได้ที่WorkManager.updateWork
และExistingPeriodicWorkPolicy.UPDATE
การเปลี่ยนแปลง API
- เพิ่ม
WorkManager.updateWork
เพื่ออัปเดตงานโดยเก็บเวลาจัดคิวและการจัดลำดับเดิมไว้ (I9a248, b/219446409) - เพิ่ม
ExistingPeriodicWorkPolicy.UPDATE
แล้ว นโยบายนี้อนุญาตให้อัปเดตงานตามรอบโดยใช้ชื่อ ซึ่งคล้ายกับREPLACE
ที่มีอยู่ แต่รบกวนน้อยกว่า จะไม่ยกเลิกผู้ปฏิบัติงานหากกำลังทำงานอยู่ และเก็บเวลาจัดคิวไว้ โดยระบบจะคำนวณความล่าช้าและระยะเวลาเริ่มต้นจากเวลาจัดคิวเดิม ไม่ใช่เวลาอัปเดต เราเลิกใช้งานREPLACE
เพื่อลดความสับสนระหว่างREPLACE
กับUPDATE
ที่มีชื่อคล้ายกันมาก หากยังคงต้องการเก็บความหมายเดิมของREPLACE
ไว้ คุณสามารถใช้CANCEL_AND_REENQUEUE
ที่เพิ่มเข้ามาใหม่ซึ่งเหมือนกับREPLACE
(I985ed, b/219446409) - เพิ่มความสามารถในการขัดจังหวะข้อยกเว้นการกําหนดเวลาโดยกําหนด
SchedulingExceptionHandler
(I033eb) - ย้ายตัวช่วยแบบแทรกสำหรับ
OneTimeWorkRequest
และPeriodicWorkRequest
จากandroidx.work:work-runtime-ktx
ไปยังandroidx.work:work-runtime
(I0010f, b/209145335)
การแก้ไขข้อบกพร่อง
- เพิ่ม
@RequiresPermission
ลงใน API ที่ต้องให้สิทธิ์ POST_NOTIFICATIONS ใน SDK 33 ขึ้นไป (Ie542e, b/238790278)
เวอร์ชัน 2.8.0-alpha02
6 เมษายน 2022
androidx.work:work-*:2.8.0-alpha02
ได้รับการปล่อยแล้ว เวอร์ชัน 2.8.0-alpha02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้คุณสร้างข้อจำกัดได้โดยตรงโดยไม่ต้องใช้ Builder ซึ่งสะดวกสำหรับผู้ใช้ Kotlin (Idc390, b/137568653)
- เพิ่มความสามารถในการตรวจสอบว่า
WorkManager
ได้รับการเริ่มต้นแล้วหรือยัง นอกจากนี้ เรายังได้เพิ่มgetConfiguration()
API ใหม่สําหรับนักพัฒนาไลบรารีเพื่อให้รับการกําหนดค่าที่เริ่มต้นWorkManager
ด้วย (I6eff3, b/212300336)
เวอร์ชัน 2.8.0-alpha01
12 มกราคม 2022
androidx.work:work-*:2.8.0-alpha01
ได้รับการปล่อยแล้ว เวอร์ชัน 2.8.0-alpha01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มเมธอดตัวช่วย
WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
,WorkQuery.fromTags
เพื่อสร้าง WorkQuery โดยตรง (If48f2, b/199919736) - เพิ่มเมธอด BuildCompat เวอร์ชันทดลองสำหรับ SDK ในอนาคต (Iafd82, b/207528937)
- เพิ่ม
getForegroundInfo
ไปยังWorker
(Ic1ead) - เพิ่มเมธอดตัวช่วย
WorkQuery.fromIds
เพื่อสร้าง WorkQuery จากรหัสโดยตรง (Ie5bdf, b/199919736) - ตอนนี้ RxWorker มี
setForeground
ที่แสดงผลCompletable
ซึ่งสามารถใช้แทนsetForegroundInfoAsync
ที่แสดงผลListenableFuture
(I85156) - ตอนนี้ RxWorker สำหรับ RxJava 2 มี
getForegroundInfo
ที่แสดงผลSingle
ซึ่งสามารถใช้แทนgetForegroundInfoAsync
ที่แสดงผลListenableFuture
(I21c91, b/203851459) - ตอนนี้ RxWorker สำหรับ RxJava 3 มี
getForegroundInfo
ที่แสดงผลSingle
ซึ่งสามารถใช้แทนgetForegroundInfoAsync
ที่แสดงผลListenableFuture
(I1ca8a) - ตอนนี้ RxWorker มี
setForeground
ที่แสดงผลCompletable
ซึ่งสามารถใช้แทนsetForegroundInfoAsync
ที่แสดงผลListenableFuture
(I992a3, b/203851459)
การแก้ไขข้อบกพร่อง
- เผยแพร่การยกเลิกใน
CoroutineScope
ไปยังListenableFuture
เมื่อใช้suspendCancellableCoroutine
(I77e63)
เวอร์ชัน 2.7
เวอร์ชัน 2.7.1
17 พฤศจิกายน 2021
androidx.work:work-*:2.7.1
ได้รับการปล่อยแล้ว เวอร์ชัน 2.7.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- การยกเลิกใน
CoroutineScope
จะส่งต่อไปยังListenableFuture
เมื่อใช้suspendCancellableCoroutine
(I77e63) - ระบบจะแสดงข้อยกเว้นทันทีเมื่อมีการทําเครื่องหมายคําของานล่าช้าว่าเร่งด่วน bef1762
เวอร์ชัน 2.7.0
13 ตุลาคม 2021
androidx.work:work-*:2.7.0
ได้รับการปล่อยแล้ว เวอร์ชัน 2.7.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.6.0
WorkManager เปิดตัว
WorkRequest.Builder.setExpedited(...)
API ใหม่เพื่อช่วยเกี่ยวกับข้อจำกัดของบริการที่ทำงานอยู่เบื้องหน้าใน Android 12เมื่อใช้
setExpedited(...)
ทาง WorkManager จะมอบหมายงานเร่งด่วนใน JobScheduler ตั้งแต่ Android 12 เป็นต้นไป ขณะเดียวกันก็มอบหมายงานให้กับบริการที่ทำงานอยู่เบื้องหน้าเพื่อให้ใช้งานร่วมกับ Android เวอร์ชันเก่าได้
เวอร์ชัน 2.7.0-rc01
29 กันยายน 2021
androidx.work:work-*:2.7.0-rc01
ได้รับการปล่อยแล้ว เวอร์ชัน 2.7.0-rc01 มีการคอมมิตเหล่านี้
เวอร์ชันนี้เหมือนกับ androidx.work:work-*:2.7.0-beta01
เวอร์ชัน 2.7.0-beta01
1 กันยายน 2021
androidx.work:work-*:2.7.0-beta01
ได้รับการปล่อยแล้ว เวอร์ชัน 2.7.0-beta01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ลดการแย่งกันใช้ SQLite แบบหลายกระบวนการเมื่อเริ่มต้น WorkManager
การเปลี่ยนแปลง API
- นำ
@ExperimentalExpeditedWork
API ออกเนื่องจาก 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
:รองรับเวิร์กเกอร์แบบหลายกระบวนการสําหรับsetProgressAsync()
(Ib6d08) - จาก WorkManager
2.6.0-alpha02
:ทำให้WorkManagerInitializer
เป็นสาธารณะเพื่อให้androidx.startup.Initializer
อื่นๆ ใช้WorkManagerInitializer
เหล่านี้เป็น 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 นี้มาแทนที่
setForegroundAsync(...)
/setForeground(...)
API ซึ่งตอนนี้เลิกใช้งานแล้วเมื่อใช้
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/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 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
เพิ่มการรองรับสำหรับ Worker ที่ทำงานได้ในกระบวนการใดก็ได้ (Iaf200)
เพิ่ม
RemoteCoroutineWorker
ซึ่งเป็นการใช้งานRemoteListenableWorker
ที่สามารถเชื่อมโยงกับกระบวนการระยะไกล (I30578)
การเปลี่ยนแปลง API
- เพิ่มการรองรับข้อจำกัดของเครือข่าย
TEMPORARILY_UNMETERED
(I08d5e) - รองรับผู้ปฏิบัติงานแบบหลายกระบวนการสําหรับ
setProgressAsync()
(Ib6d08) - ทำให้
WorkManagerInitializer
เป็นสาธารณะเพื่อให้androidx.startup.Initializer
อื่นๆ ใช้WorkManagerInitializer
เหล่านี้เป็น 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
เมื่อใช้AlarmManager
API (aosp/1587518)
เวอร์ชัน 2.5.0
เวอร์ชัน 2.5.0
27 มกราคม 2021
androidx.work:work-*:2.5.0
ได้รับการปล่อยแล้ว เวอร์ชัน 2.5.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.4.0
- อาร์ติแฟกต์
:work:work-multiprocess
ใหม่สําหรับแอปที่ใช้หลายกระบวนการ ซึ่งจะเพิ่มประสิทธิภาพด้วยการรวมการกำหนดเวลาคำของานไว้ในกระบวนการเดียว- หากต้องการใช้
work-multiprocess
ให้กำหนดการพึ่งพาดังนี้implementation "androidx.work:work-multiprocess:2.5.0"
- กำหนดกระบวนการหลักโดยใช้ Configuration.Builder.setDefaultProcessName(String)
- เมื่อใช้
work-multiprocess
คุณควรใช้ RemoteWorkManager เพื่อจัดการWorkRequest
ด้วย RemoteWorkManager จะติดต่อกระบวนการที่กําหนดไว้เสมอ ตัวกำหนดเวลาในกระบวนการจะทำงานในกระบวนการที่กําหนดด้วย
- หากต้องการใช้
- บางครั้ง
ActivityManager
สร้างอินสแตนซ์JobService
เพื่อเริ่มงานไม่ได้ ซึ่งจะทำให้ระบบยกเลิกงานที่เกี่ยวข้องโดยอัตโนมัติเนื่องจากข้อบกพร่องของแพลตฟอร์ม ตอนนี้WorkManager
จะตรวจสอบว่ามีงานสำรองสำหรับWorkRequest
แต่ละรายการเมื่อมีการเริ่มต้นApplication
โดยการปรับยอดงาน ซึ่งจะช่วยเพิ่มความน่าเชื่อถือของการดำเนินการงานได้อย่างมาก (b/172475041, aosp/1489577) WorkManager
จำกัดการเติบโตของฐานข้อมูลด้วยการตัดระยะเวลาบัฟเฟอร์ที่ติดตามWorkRequest
หลังจากWorkRequest
เสร็จสมบูรณ์ ก่อนหน้านี้ระยะเวลาคือ7
วัน โดยจะลดลงเป็น1
วัน + ระยะเวลา keepResultsForAtLeast (aosp/1419708)- ตอนนี้
TestListenableWorkerBuilder
รองรับคลาสที่แปลงค่าแล้วซึ่งขยายมาจากListenableWorker
เพื่อให้การทดสอบง่ายขึ้น (aosp/1443299, b/169787349) - เครื่องมือตรวจสอบ WorkManager พร้อมให้ใช้งานแล้วเมื่อใช้ Android Studio Arctic Fox
เวอร์ชัน 2.5.0-rc01
13 มกราคม 2021
androidx.work:work-*:2.5.0-rc01
ได้รับการปล่อยแล้ว เวอร์ชัน 2.5.0-rc01 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่
getWorkInfosLiveData
ไม่ได้ถูกทำให้เป็นโมฆะอย่างถูกต้องหลังจากอัปเดตเอนทิตีเมื่อใช้ API ที่อิงตามWorkQuery
(aosp/1540566, b/173769028) - แก้ไขข้อบกพร่องที่ระบบไม่ได้ทําเครื่องหมายธุรกรรมฐานข้อมูลว่าสําเร็จในบางกรณีที่พบไม่บ่อย ซึ่งจะทำให้เกิดปัญหาในอุปกรณ์ Motorola บางรุ่น (aosp/1535368, b/175944460)
- แก้ไขข้อบกพร่องเพื่อละเว้น
NoSuchElementException
เมื่อพยายามยกเลิกการเชื่อมโยงจากกระบวนการที่หยุดทำงาน (aosp/1530589) - ปรับปรุง
ConstraintTrackingWorker
ให้หยุดListenableWorker
เฉพาะในกรณีที่ยังไม่ได้หยุด (aosp/1496844, b/172946965) - อัปเดตไลบรารี androidx.work ให้กำหนดเป้าหมายเป็น Java 8 (Ibd2f2)
เวอร์ชัน 2.5.0-beta02
2 ธันวาคม 2020
androidx.work:work-*:2.5.0-beta02
ได้รับการปล่อยแล้ว เวอร์ชัน 2.5.0-beta02 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องใน
androidx.work:work-multiprocess
ที่ WorkManager บล็อกเธรดการเรียกโดยไม่ตั้งใจเมื่อพยายามเชื่อมโยงกับกระบวนการที่กําหนด (aosp/1475538) - แก้ไขข้อบกพร่องที่ระบบปรับยอด
PeriodicWorkRequest
ไม่ถูกต้อง (b/172475041, aosp/1489577) - เพิ่มวิธีแก้ปัญหาข้อบกพร่องของแพลตฟอร์มเมื่อหยุดบริการที่ทำงานอยู่เบื้องหน้าเมื่อใช้
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
และRemoteWorkContinuation
API เหล่านี้จะไม่มีเครื่องหมายเป็น@Restricted
อีกต่อไป (aosp/1432091) - แก้ไขกฎ ProGuard สำหรับ
:work:work-multiprocess
(aosp/1432091) - ปรับปรุงวงจรการแจ้งเตือนสำหรับงานที่ทำงานอยู่เป็นเวลานานซึ่งเชื่อมโยงกับบริการที่ทำงานอยู่เบื้องหน้า (b/168502234, aosp/1431331)
เวอร์ชัน 2.5.0-alpha02
16 กันยายน 2020
androidx.work:work-*:2.5.0-alpha02
ได้รับการปล่อยแล้ว เวอร์ชัน 2.5.0-alpha02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม API ลงใน WorkQuery เพื่อใช้
id
เพื่อค้นหาWorkInfo
(aosp/1412372, b/157335295) - WorkManager รองรับแอปที่ใช้หลายกระบวนการได้ดีขึ้นด้วยอาร์ติแฟกต์ใหม่ (
androidx.work:work-multiprocess:*
) อาร์ติแฟกต์ใหม่นี้ช่วยแก้ปัญหาบางอย่างที่แอปขนาดใหญ่พบได้ ดังนี้- โดยปกติแล้ว WorkManager ต้องได้รับการเริ่มต้นในกระบวนการของแอปทุกรายการ ซึ่งไม่ดีเนื่องจากมีการแข่งขันกันมากขึ้นใน SQLite ซึ่งจะทำให้เกิดปัญหาอื่นๆ ตามมา ตอนนี้ WorkManager มี API ใหม่ที่สามารถใช้เพื่อกำหนดกระบวนการแอปหลักโดยใช้
Configuration#setDefaultProcessName(processName)
processName
คือชื่อกระบวนการที่สมบูรณ์ในตัวเองซึ่งมีลักษณะดังนี้packageName:processName
(เช่นcom.example:remote
) - ชุด API ใหม่:
RemoteWorkManager
และRemoteWorkContinuation
สำหรับคำของานenqueue
,cancel
และquery
API เหล่านี้ไม่รวมตัวแปรLiveData
เพื่อหลีกเลี่ยงการแย่งกันใช้ SQLite ในหลายกระบวนการ การเรียกenqueue
,cancel
และquery
ทั้งหมดจะส่งต่อไปยังกระบวนการแอปprimary
โดยใช้ AIDL และแสดงผลListenableFuture
ได้อย่างราบรื่น (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- โดยปกติแล้ว WorkManager ต้องได้รับการเริ่มต้นในกระบวนการของแอปทุกรายการ ซึ่งไม่ดีเนื่องจากมีการแข่งขันกันมากขึ้นใน SQLite ซึ่งจะทำให้เกิดปัญหาอื่นๆ ตามมา ตอนนี้ WorkManager มี API ใหม่ที่สามารถใช้เพื่อกำหนดกระบวนการแอปหลักโดยใช้
การเปลี่ยนแปลง API
- ตอนนี้ WorkManager จะตัด
WorkRequest
ที่เสร็จสมบูรณ์แล้วซึ่งไม่มีทรัพยากร Dependency ที่ยังไม่เสร็จสมบูรณ์ออกอย่างจริงจังมากขึ้น ระยะเวลาบัฟเฟอร์เปลี่ยนจาก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
ที่อยู่ระหว่างดำเนินการจะพิจารณาเฉพาะงานที่ไม่มีความล่าช้าและเป็นไปตามข้อจำกัด ตอนนี้เครื่องมือจัดตารางเวลาระหว่างกระบวนการจะติดตามWorkRequest
ที่อาจทำงานในอนาคต รวมถึง PeriodicWorkRequests นอกจากนี้Scheduler
ที่อยู่ระหว่างดำเนินการจะไม่เป็นไปตามขีดจำกัดการกําหนดเวลา (แต่ยังคงถูกจํากัดตามขนาดของExecutor
ที่ WorkManager ใช้อยู่) ซึ่งหมายความว่าตอนนี้แอปพลิเคชันสามารถเรียกใช้ WorkRequest ได้มากขึ้นเมื่อแอปทำงานอยู่เบื้องหน้าWorkManager
ยังเปิดตัวRunnableScheduler
ใหม่ที่กำหนดค่าได้เพื่อจัดการการดําเนินการของงานที่เลื่อนเวลาไว้อยู่เบื้องหน้า (aosp/1185778) - ตอนนี้ WorkManager รองรับ RxJava 3 แล้ว หากต้องการใช้ RxJava 3 คุณควรระบุ Dependency ต่อไปนี้
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>"
ซึ่งให้ข้อมูลที่เป็นประโยชน์มากมาย เช่น
- WorkRequest ที่เสร็จสมบูรณ์ในช่วง 24 ชั่วโมงที่ผ่านมา
- WorkRequest ที่กําลังทํางานอยู่
- คำขอแจ้งปัญหาที่กำหนดเวลาไว้ (aosp/1235501)
เพิ่ม
ExistingWorkPolicy.APPEND_OR_REPLACE
ซึ่งคล้ายกับAPPEND
แต่จะใช้แทนเชนที่ยกเลิกหรือไม่เป็นไปตามข้อกําหนดเบื้องต้น (b/134613984, aosp/1199640)เพิ่มความสามารถในการเพิ่ม
RunnableScheduler
ที่กําหนดเองเพื่อติดตามคําขอทํางานที่จําเป็นต้องดําเนินการในอนาคต ซึ่งใช้โดยตัวจัดตารางเวลาในกระบวนการ (aosp/1203944)เพิ่มการรองรับการเพิ่มโรงงานแบบไดนามิกเพื่อมอบสิทธิ์ให้เมื่อใช้
DelegatingWorkerFactory
(b/156289105, aosp/1309745)ปรับการติดตามข้อจำกัด
BATTERY_NOT_LOW
ให้สอดคล้องกับแพลตฟอร์มมากขึ้น (aosp/1312583)ตอนนี้เครื่องมือจัดตารางเวลาในกระบวนการใช้ API ที่ดีขึ้นในการระบุชื่อของกระบวนการ ซึ่งมีประโยชน์ในการสนับสนุนแอปที่ใช้หลายกระบวนการได้ดียิ่งขึ้น (aosp/1324732)
กฎ Lint ใหม่ที่จะบังคับใช้
- การใช้
foregroundServiceType
ที่ถูกต้องเมื่อใช้setForegroundAsync()
API (b/147873061, aosp/1215915) - ระบุรหัส JobScheduler ที่ WorkManager ควรใช้เมื่อใช้ JobService API โดยตรง aosp/1223567
- เพิ่มกฎ lint ใหม่ที่ช่วยให้มั่นใจว่า
ListenableWorker
การใช้งานตอนนี้เป็นpublic
เมื่อใช้WorkerFactory
เริ่มต้น (aosp/1291262)
- การใช้
ตอนนี้การเรียกใช้
setForegroundAsync()
ที่ไม่เสร็จสมบูรณ์ก่อนListenableWorker
จะส่งสัญญาณผ่านIllegalStateException
ในListenableFuture
ที่แสดงผล (aosp/1262743)แก้ไขข้อบกพร่องที่
ForegroundService
ไม่หยุดทำงานหลังจากที่Worker
ในเบื้องหน้าถูกขัดจังหวะ (b/155579898, aosp/1302153)แก้ไขข้อบกพร่องที่
WorkManager
พยายามเรียกใช้อินสแตนซ์หลายรายการของWorker
ที่เชื่อมโยงกับบริการที่ทำงานอยู่เบื้องหน้า (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 คุณควรระบุ Dependency ต่อไปนี้
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"
(aosp/1277904) - เพิ่มกฎ lint ใหม่ที่ช่วยให้มั่นใจว่า
ListenableWorker
การใช้งานตอนนี้เป็นpublic
เมื่อใช้WorkerFactory
เริ่มต้น (aosp/1291262)
การเปลี่ยนแปลง API
- การเรียก
setProgressAsync()
หลังจากที่ListenableWorker
ดำเนินการเสร็จสิ้นแล้ว จะส่งสัญญาณException
ผ่านListenableFuture
(aosp/1285494) - ตอนนี้
WorkQuery.Builder
มีสถานะเป็นfinal
(aosp/1275037) - เปลี่ยนชื่อเมธอดที่สร้างอินสแตนซ์ของ
WorkQuery.Builder
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 ใหม่ที่เตือนเมื่อ
WorkRequest
ต้องใช้ทั้งConstraints.setRequiresCharging(...)
และConstraints.setRequiresDeviceIdle(...)
อุปกรณ์บางเครื่องไม่ได้ชาร์จและไม่ได้ใช้งานพร้อมกัน ดังนั้นคำขอดังกล่าวจึงทำงานน้อยกว่าที่คาดไว้ (aosp/1253840)
การเปลี่ยนแปลง API
เพิ่มความสามารถในการค้นหา
WorkInfo
โดยใช้WorkQuery
ซึ่งจะเป็นประโยชน์เมื่อนักพัฒนาแอปต้องการค้นหาWorkInfo
โดยใช้การรวมแอตทริบิวต์หลายรายการ ดูข้อมูลเพิ่มเติมได้ที่WorkQuery.Builder withStates(...)
,WorkQuery.Builder withTags(...)
หรือWorkQuery.Builder withUniqueWorkNames(...)
(aosp/1253230, b/143847546)ตอนนี้การเรียกใช้
setForegroundAsync()
ที่ไม่เสร็จสมบูรณ์ก่อนListenableWorker
จะส่งสัญญาณผ่านIllegalStateException
ในListenableFuture
ที่แสดงผล (aosp/1262743)
การแก้ไขข้อบกพร่อง
- แก้ไขกฎการตรวจสอบข้อบกพร่องที่ตรวจหาระยะเวลาของช่วงที่ไม่ถูกต้องสำหรับ
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>"
ซึ่งให้ข้อมูลที่เป็นประโยชน์มากมาย เช่น- WorkRequest ที่เสร็จสมบูรณ์ในช่วง 24 ชั่วโมงที่ผ่านมา
- WorkRequest ที่กําลังทํางานอยู่
- คำขอแจ้งปัญหาที่กำหนดเวลาไว้ (aosp/1235501)
กฎ Lint ใหม่ที่จะบังคับใช้
- การใช้
foregroundServiceType
ที่ถูกต้องเมื่อใช้setForegroundAsync()
API (b/147873061, aosp/1215915) - ระบุรหัส
JobScheduler
ที่WorkManager
ควรใช้เมื่อใช้JobService
API โดยตรง (aosp/1223567)
- การใช้
การเปลี่ยนแปลง API
เพิ่ม
ExistingWorkPolicy.APPEND_OR_REPLACE
ซึ่งคล้ายกับAPPEND
แต่แทนที่เชนที่มีการยกเลิกหรือไม่เป็นไปตามข้อกําหนดเบื้องต้น (b/134613984, aosp/1199640)เพิ่มความสามารถในการเพิ่ม
RunnableScheduler
ที่กําหนดเองเพื่อติดตามWorkRequest
ที่ต้องดําเนินการในอนาคต ซึ่งใช้โดยตัวจัดตารางเวลาในกระบวนการ (aosp/1203944)
การแก้ไขข้อบกพร่อง
- เลิกใช้งาน
setProgress()
ในRxWorker
เนื่องจากก่อนหน้านี้มีการแสดงผลSingle<Void>
ซึ่งเป็นประเภทที่ไม่เป็นไปได้ เพิ่ม API ใหม่setCompletableProgress()
ซึ่งแสดงผลเป็นCompletable
แทน และเพิ่มกฎ Lint ใหม่ซึ่งช่วยในการย้ายข้อมูลไปยัง API ใหม่ (b/150080946, aosp/1242665)
เวอร์ชัน 2.3.4
เวอร์ชัน 2.3.4
18 มีนาคม 2020
androidx.work:work-*:2.3.4
ได้รับการปล่อยแล้ว เวอร์ชัน 2.3.4 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทําให้
Worker
ที่ทำงานเป็นเวลานานหลายอินสแตนซ์ทํางานหลังจากที่เกินกรอบเวลาการดําเนินการ 10 นาที (aosp/1247484, b/150553353) - แก้ไขข้อผิดพลาด
IssueRegistry
ของ Lint ของ WorkManager ขอขอบคุณ @ZacSweers จาก Slack สำหรับการมีส่วนร่วม (aosp/1217923)
เวอร์ชัน 2.3.3
เวอร์ชัน 2.3.3
4 มีนาคม 2020
androidx.work:work-*:2.3.3
ได้รับการปล่อยแล้ว เวอร์ชัน 2.3.3 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่หาก
Worker
ถูกขัดจังหวะ ระบบจะไม่กำหนดเวลาใหม่อย่างถูกต้อง (b/150325687, aosp/1246571)
เวอร์ชัน 2.3.2
เวอร์ชัน 2.3.2
19 กุมภาพันธ์ 2020
androidx.work:work-*:2.3.2
ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.2 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ WorkManager มีงานเกินขีดจํากัด 100 งานใน JobScheduler ในบางกรณี (aosp/1226859, b/149092520)
- แก้ไขเงื่อนไขการแข่งขันใน ConstraintControllers (aosp/1220100)
- ปรับปรุงวงจรการจัดการบริการที่ทำงานอยู่เบื้องหน้าสำหรับ Worker ที่ทำงานเป็นเวลานาน (aosp/1226295)
- ปรับปรุงการจัดการการยกเลิกการแจ้งเตือนสำหรับงานที่ทำงานอยู่นานเมื่อมีการยกเลิกงาน (aosp/1228346)
เวอร์ชัน 2.3.1
เวอร์ชัน 2.3.1
5 กุมภาพันธ์ 2020
androidx.work:work-*:2.3.1
ได้รับการปล่อยแล้ว เวอร์ชัน 2.3.1 มีการคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- จัดการวงจรของ
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
จะกำหนดapi
Dependency ในwork-runtime-ktx
(aosp/1194410)
เวอร์ชัน 2.3.0-beta02
18 ธันวาคม 2019
androidx.work:work-*:2.3.0-beta02
ได้รับการปล่อยแล้ว เวอร์ชัน 2.3.0-beta02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มข้อความแสดงข้อผิดพลาดที่ดีขึ้นสำหรับข้อยกเว้น SQLite ที่กู้คืนไม่ได้ (aosp/1185777)
- เพิ่มกฎ lint ซึ่งจะตรวจสอบว่าระบบนำผู้ให้บริการเนื้อหา
androidx.work.impl.WorkManagerInitializer
ออกจากAndroidManifest.xml
เมื่อใช้การเริ่มต้นแบบออนดีมานด์ (aosp/1167007) - เพิ่มคำเตือนเกี่ยวกับ Lint เมื่อใช้
enqueue()
สำหรับPeriodicWorkRequest
แทนenqueueUniquePeriodicWork()
(aosp/1166032)
การเปลี่ยนแปลง API
- ตอนนี้
ForegroundInfo
กำหนดให้คุณต้องระบุnotificationId
ที่จะใช้เมื่อใช้ListenableWorker.setForegroundAsync()
การเปลี่ยนแปลงนี้ส่งผลกับส่วนอื่นในระบบ ซึ่งจะช่วยให้คุณเรียกใช้Worker
หลายรายการที่ทำงานต่อเนื่องได้พร้อมกันWorkManager
ยังจัดการอายุของNotification
ที่ระบุได้ดีขึ้นด้วย (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องในการใช้งาน AlarmManager ที่ล้างการปลุกไม่ถูกต้อง (aosp/1156444)
- แก้ไขข้อบกพร่องที่รายการ
WorkRequest
ว่างเปล่าจะทําให้สร้างเชนWorkContinuation
ที่ไม่ถูกต้อง (b/142835274, aosp/1157051)
การเปลี่ยนแปลงทรัพยากร Dependency
- ตอนนี้ WorkManager ใช้ Room 2.2.2
เวอร์ชัน 2.3.0-beta01
20 พฤศจิกายน 2019
androidx.work:work-*:2.3.0-beta01
ได้รับการปล่อยแล้ว เวอร์ชัน 2.3.0-beta01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มกฎ lint ใหม่ซึ่งป้องกันข้อผิดพลาดของนักพัฒนาซอฟต์แวร์เนื่องจากการใช้งาน
androidx.work.Configuration.Provider
ไม่ถูกต้องเมื่อใช้การเริ่มต้นแบบออนดีมานด์ aosp/1164559
เวอร์ชัน 2.3.0-alpha03
23 ตุลาคม 2019
androidx.work:work-*:2.3.0-alpha03
ได้รับการปล่อยแล้ว เวอร์ชัน 2.3.0-alpha03 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม
WorkManager.createCancelPendingIntent()
API ซึ่งทำให้ยกเลิกWorkRequest
ได้ง่ายโดยไม่ต้องลงทะเบียนคอมโพเนนต์อื่นในAndroidManifest.xml
API นี้ช่วยให้ยกเลิกWorkRequest
จากNotification
ได้ง่ายขึ้น เราคาดว่าจะจับคู่ API นี้กับ 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
- เปลี่ยนชื่อ
containsKey
API ในData
เป็นhasKeyWithValueOfType
วิธีการขยายที่เกี่ยวข้องในไลบรารีktx
ก็เปลี่ยนชื่อด้วย (b/141916545)
แก้ไขข้อบกพร่อง
- WorkManager จะกำหนดเวลางานอย่างเป็นธรรมเมื่อจำนวน
WorkRequest
ที่รอดำเนินการเข้าใกล้ขีดจำกัดการกำหนดเวลา (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
สามารถตั้งค่าความคืบหน้าผ่านsetProgressAsync()
API ได้แล้ว นอกจากนี้ ยังเพิ่มsuspend
-ingsetProgress
API ที่เกี่ยวข้องในCoroutineWorker
และsetProgress
ในRxWorker
ซึ่งแสดงผลSingle<Void>
API ใหม่เหล่านี้ช่วยให้แรงงานสามารถส่งข้อมูลความคืบหน้าผ่านWorkInfo
ซึ่งมีgetProgress
API ที่เกี่ยวข้อง (b/79481554) Data
มีcontainsKey()
API ซึ่งสามารถใช้ตรวจสอบว่าข้อมูลอินพุตไปยังWorker
มีคีย์ที่มีประเภทที่คาดไว้ (b/117136838)- ตอนนี้
Data
สามารถจัดรูปแบบโดยใช้Data.toByteArray()
และData.fromByteArray()
ได้แล้ว โปรดทราบว่าData
ไม่มีการรับประกันเวอร์ชัน คุณจึงไม่ควรเก็บข้อมูลหรือใช้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 นี่เป็นทรัพยากร Dependency ที่ไม่บังคับซึ่งช่วยในการประมวลผลเบื้องหลังที่เชื่อถือได้และมีประสิทธิภาพมากขึ้นใน API เวอร์ชันเก่า หากแอปใช้ Google Play Services ให้เพิ่ม Dependency นี้ลงในไฟล์ gradle เพื่อรับการรองรับ GCMNetworkManager โดยอัตโนมัติ หาก Play Services ไม่พร้อมใช้งาน WorkManager จะกลับไปใช้ AlarmManager ในอุปกรณ์รุ่นเก่าต่อไป
เวอร์ชัน 2.2.0-rc01
30 กรกฎาคม 2019
androidx.work:work-*:2.2.0-rc01
ได้รับการปล่อยแล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องในการใช้งาน AlarmManager ซึ่งทําให้บริการปิดก่อนเวลาอันควรและส่งผลให้เกิด
RejectedExecutionException
ในบางกรณีที่พบไม่บ่อย (aosp/1092374) (b/138238197) - เพิ่มวิธีแก้ปัญหาสำหรับ
NullPointerException
เมื่อใช้JobScheduler
API ในอุปกรณ์บางเครื่อง (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 นี่เป็นไลบรารี ไม่บังคับที่จะช่วยในการประมวลผลเบื้องหลังที่เชื่อถือได้และมีประสิทธิภาพมากขึ้นใน API เวอร์ชันเก่า หากแอปใช้ Google Play Services ให้เพิ่ม Dependency นี้ลงในไฟล์ gradle เพื่อรับการรองรับ GCMNetworkManager โดยอัตโนมัติ หาก Play Services ไม่พร้อมใช้งาน WorkManager จะกลับไปใช้ AlarmManager ในอุปกรณ์รุ่นเก่าต่อไป
แก้ไขข้อบกพร่อง
- แก้ไข
IllegalArgumentException
เมื่อติดตามสถานะเครือข่ายในแท็บเล็ต Nvidia Shield K1 (aosp/1010188)
เวอร์ชัน 2.1.0
เวอร์ชัน 2.1.0
11 กรกฎาคม 2019
androidx.work:work-*:2.1.0
ได้รับการปล่อยแล้ว รุ่นนี้เหมือนกับ androidx.work:work-*:2.1.0-rc01
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.0.1
work-runtime-ktx
ต้องใช้ Java 8 หากพบปัญหา คุณสามารถเพิ่มข้อมูลต่อไปนี้ลงในbuild.gradle
kotlinOptions { jvmTarget = "1.8" }
- เพิ่มการเริ่มต้นแบบออนดีมานด์สําหรับ WorkManager ซึ่งจะสร้าง WorkManager เฉพาะเมื่อมีการอ้างอิงเท่านั้น b/127497100 วิธีตั้งค่าโปรเจ็กต์สําหรับการเริ่มต้นแบบออนดีมานด์
- ปิดใช้ตัวเริ่มต้นอัตโนมัติ
- ใช้
Configuration.Provider
กับออบเจ็กต์Application
ที่กําหนดเอง - เปลี่ยนการอ้างอิง
WorkManager.getInstance()
ทั้งหมดเป็นWorkManager.getInstance(Context)
การเปลี่ยนแปลงนี้ทำให้เราได้เลิกใช้งานWorkManager.getInstance()
การเรียกใช้WorkManager.getInstance(Context)
เปลี่ยนทดแทนใหม่จะปลอดภัยกว่าเสมอ แม้ว่าคุณจะไม่ได้ทำการเริ่มต้นใช้งานแบบออนดีมานด์ก็ตาม
- ตอนนี้
PeriodicWorkRequest
รองรับการเลื่อนเวลาเริ่มต้นแล้ว คุณใช้วิธีsetInitialDelay
ในPeriodicWorkRequest.Builder
เพื่อตั้งค่าการเลื่อนเวลาเริ่มต้นได้ b/111404867 - เพิ่มความสามารถในการมอบสิทธิ์ให้กับ
WorkerFactory
ที่ลงทะเบียนอย่างน้อย 1 รายการโดยใช้DelegatingWorkerFactory
b/131435993 - เพิ่มความสามารถในการปรับแต่ง
Executor
ที่ WorkManager ใช้สำหรับบันทึกบัญชีภายในทั้งหมดผ่านConfiguration.Builder.setTaskExecutor
- เพิ่มความสามารถในการสร้างคลาส
Worker
และListenableWorker
ที่ทดสอบได้ระดับหน่วยโดยใช้TestWorkerBuilder
และTestListenableWorkerBuilder
ในอาร์ติแฟกต์work-testing
- โปรดทราบว่าตอนนี้
work-testing
จะดึงข้อมูล Kotlin มาใช้เป็นข้อกำหนดและรวมส่วนขยาย Kotlin หลายรายการโดยค่าเริ่มต้น
- โปรดทราบว่าตอนนี้
- เพิ่มจํานวนการพยายามเรียกใช้เป็น
WorkInfo
b/127290461 - ตอนนี้ประเภท
Data
สามารถจัดเก็บและเรียกดูไบต์และอาร์เรย์ไบต์ได้แล้ว ซึ่งจะไม่เปลี่ยนขนาดสูงสุดของออบเจ็กต์Data
- ตอนนี้ WorkManager ขึ้นอยู่กับ
Room 2.1.0
ซึ่งควรแก้ไขปัญหาฐานข้อมูลบางอย่างได้
เวอร์ชัน 2.1.0-rc01
27 มิถุนายน 2019
androidx.work:work-*:2.1.0-rc01
ได้รับการปล่อยแล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทําให้แอปพลิเคชันขัดข้องเมื่อเรียกใช้งานด้วย
JobScheduler
ขณะสํารองข้อมูลอยู่ b/135858602
เวอร์ชัน 2.1.0-beta02
20 มิถุนายน 2019
androidx.work:work-*:2.1.0-beta02
ได้รับการปล่อยแล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
แก้ไขข้อบกพร่อง
- ตอนนี้
TestListenableWorkerBuilder
ใช้WorkerFactory
ที่ถูกต้องเมื่อสร้างอินสแตนซ์ของListenableWorker
b/135275844 - แก้ไขข้อบกพร่องที่ทำให้กรอบเวลาการดำเนินการของ
WorkRequest
เปลี่ยนไปเนื่องจากกระบวนการสิ้นสุดการทำงาน b/135272196
เวอร์ชัน 2.1.0-beta01
13 มิถุนายน 2019
androidx.work:work-*:2.1.0-beta01
ได้รับการปล่อยแล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
แก้ไขข้อบกพร่อง
- ตอนนี้ WorkManager ขึ้นอยู่กับ
Room 2.1.0
ซึ่งควรแก้ไขปัญหาฐานข้อมูลบางอย่างได้ - นำ 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)
- ตอนนี้ Dependency ของ 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เพิ่มความสามารถในการมอบสิทธิ์ให้กับ
WorkerFactory
ที่ลงทะเบียนอย่างน้อย 1 รายการโดยใช้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 วิธีตั้งค่าโปรเจ็กต์สําหรับการเริ่มต้นแบบออนดีมานด์มีดังนี้
- ปิดใช้ตัวเริ่มต้นอัตโนมัติ
- ใช้
Configuration.Provider
กับออบเจ็กต์Application
ที่กําหนดเอง - เปลี่ยนการอ้างอิง
WorkManager.getInstance()
ทั้งหมดเป็นWorkManager.getInstance(Context)
การเปลี่ยนแปลงนี้ทำให้เราต้องเลิกใช้งานWorkManager.getInstance()
การเรียกใช้WorkManager.getInstance(Context)
เปลี่ยนทดแทนใหม่จะปลอดภัยกว่าเสมอ แม้ว่าคุณจะไม่ได้ทำการเริ่มต้นใช้งานแบบออนดีมานด์ก็ตาม
- เพิ่มความสามารถในการสร้างคลาส
Worker
และListenableWorker
ที่ทดสอบได้ระดับหน่วยโดยใช้TestWorkerBuilder
และTestListenableWorkerBuilder
ในอาร์ติแฟกต์work-testing
- โปรดทราบว่าตอนนี้
work-testing
จะดึงข้อมูล Kotlin มาใช้เป็นข้อกำหนดเบื้องต้น แต่ก็รวมส่วนขยาย Kotlin หลายรายการไว้โดยค่าเริ่มต้นด้วย
- โปรดทราบว่าตอนนี้
- เพิ่มจํานวนการพยายามเรียกใช้เป็น
WorkInfo
b/127290461 - ตอนนี้ประเภท
Data
สามารถจัดเก็บและเรียกดูไบต์และอาร์เรย์ไบต์ได้แล้ว ซึ่งจะไม่เปลี่ยนขนาดสูงสุดของออบเจ็กต์Data
- เลิกใช้งาน
CoroutineWorker.coroutineContext
ช่องนี้พิมพ์เป็นCoroutineDispatcher
อย่างไม่ถูกต้อง คุณไม่ควรต้องใช้อีกต่อไปเนื่องจากสามารถไปที่ coroutineContext ที่ต้องการด้วยตนเองในเนื้อหาของฟังก์ชันที่ระงับได้ - ตอนนี้
RxWorker.createWork()
และRxWorker.getBackgroundScheduler()
ได้รับการกำกับเนื้อหาด้วยประเภทผลลัพธ์@NonNull
แล้ว
เวอร์ชัน 2.0.1
เวอร์ชัน 2.0.1
9 เมษายน 2019
WorkManager 2.0.1 เปิดตัวแล้ว รุ่นนี้เหมือนกับ 2.0.1-rc01
เวอร์ชัน 2.0.1-rc01
3 เมษายน 2019
WorkManager 2.0.1-rc01 พร้อมให้ใช้งานแล้ว เวอร์ชันนี้มีการแก้ไขข้อบกพร่องบางอย่าง สําหรับผู้ใช้รุ่นเดิม 1.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 ที่เสถียรแต่มี 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 เป็นไปตามกรอบเวลา
flex
สำหรับ PeriodicWorkRequests อย่างถูกต้องแล้ว b/124274584
เวอร์ชัน 1.0.0-beta05
6 กุมภาพันธ์ 2019
รุ่นนี้มีการแก้ไขข้อบกพร่องบางอย่าง
การแก้ไขข้อบกพร่อง
- แก้ไขกรณีที่ใช้
JobScheduler.getPendingJob(...)
ใน API 23 b/123893059 - แก้ไข
NullPointerException
ในอุปกรณ์ที่ใช้ Android 5.1 (API ระดับ 22) หรือต่ำกว่า b/123835104
เวอร์ชัน 1.0.0-beta04
4 กุมภาพันธ์ 2019
รุ่นนี้มีการแก้ไขข้อบกพร่องบางอย่าง
การแก้ไขข้อบกพร่อง
- ปรับปรุงการกำหนดเวลาของ PeriodicWork สำหรับการติดตั้งใช้งาน AlarmManager
- แก้ไขกรณีที่ WorkManager ติดตามข้อจำกัดอย่างไม่ถูกต้องเมื่อใช้การติดตั้งใช้งานตาม AlarmManager b/123379508
- แก้ไขกรณีที่ WorkManager พยายามทำงานอีกครั้งเมื่อกระบวนการสิ้นสุดลงไม่สำเร็จเมื่อใช้การติดตั้งใช้งานตาม AlarmManager b/123329850
- แก้ไขกรณีที่ทําให้ WorkManager ปล่อย Wakelock เมื่อใช้การติดตั้งใช้งานตาม AlarmManager
เวอร์ชัน 1.0.0-beta03
25 มกราคม 2019
รุ่นนี้มีการแก้ไขข้อบกพร่องบางอย่าง
การแก้ไขข้อบกพร่อง
- เราได้เปิดตัวการถดถอย
1.0.0-beta02
ซึ่งทําให้งานไม่ทํางานอย่างถูกต้องในบางสถานการณ์ b/123211993 - แก้ไขปัญหาในกรณีที่งานไม่เป็นไปตามช่วงเวลาการหยุดทำงานชั่วคราวอย่างถูกต้อง b/122881597
- แก้ไข
ConcurrentModificationException
ในอุปกรณ์ที่ใช้ Android 5.1 (API ระดับ 22 ขึ้นไป) หรือต่ำกว่า การอัปเดตนี้เป็นการแก้ไขต่อเนื่องจาก1.0.0-beta02
b/121345393 - เพิ่ม
exported=false
สำหรับคอมโพเนนต์บางรายการในไฟล์ 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 ใช้ - เปลี่ยนไปใช้
Room
dependency1.1.1
แทน1.1.1-rc01
เวอร์ชันเหล่านี้เหมือนกัน b/122578011
เวอร์ชัน 1.0.0-beta01
19 ธันวาคม 2018
รุ่นนี้ไม่มีการเปลี่ยนแปลง API และนับจากนี้ไป WorkManager จะใช้ API ที่เสถียรจนถึงเวอร์ชันถัดไป เว้นแต่จะเกิดปัญหาร้ายแรง รุ่นนี้มีการแก้ไขข้อบกพร่องบางอย่าง
การแก้ไขข้อบกพร่อง
- งานที่ยกเลิกไปก่อนหน้านี้ซึ่งทำงานหลักเสร็จสมบูรณ์แล้วจะไม่ทำงานอีกต่อไป b/120811767
- คลาสการบันทึกที่เริ่มต้นอย่างถูกต้อง (แสดงขึ้นในระหว่างการทดสอบเป็นหลัก)
เวอร์ชัน 1.0.0-alpha13
12 ธันวาคม 2018
เวอร์ชันนี้มีการเปลี่ยนแปลง API เล็กน้อยที่เป็นประโยชน์ต่อผู้ใช้ Kotlin บางราย
การเปลี่ยนแปลง API
- ย้าย
androidx.work.Result
ไปอยู่ในคลาสย่อยของListenableWorker
แล้ว วิธีนี้จะช่วยป้องกันไม่ให้การปรับโครงสร้างขัดแย้งกับคลาสResult
ระดับบนสุดของ Kotlin นี่คือการเปลี่ยนแปลง API ที่ทำให้เกิดข้อขัดข้อง b/120564418
การเปลี่ยนแปลง API ที่ทำให้เกิดข้อขัดข้อง
- ย้าย
androidx.work.Result
ไปอยู่ในคลาสย่อยของListenableWorker
แล้ว
เวอร์ชัน 1.0.0-alpha12
5 ธันวาคม 2018
รุ่นนี้มีการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นบางส่วน โปรดดูส่วนการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นด้านล่าง เวอร์ชันนี้มีโอกาสที่จะเปิดตัวเป็นเวอร์ชันเบต้าเวอร์ชันแรก alpha12
ยังมีเอกสารประกอบที่อัปเดตอย่างครอบคลุมด้วย
การเปลี่ยนแปลง API
- อาร์ติแฟกต์ใหม่
work-rxjava2
เปิดตัวRxWorker
นี่คือListenableWorker
ที่คาดหวังSingle<Payload>
- เรานำการรองรับ Firebase JobDispatcher ออกแล้วเนื่องจากจะเลิกใช้งานในเร็วๆ นี้ ซึ่งหมายความว่าจะไม่มีอัปเดตอาร์ติแฟกต์
work-firebase
อีกต่อไปเมื่อเราเข้าสู่ระยะเบต้า เราจะพิจารณาเพิ่มทางเลือกอื่นๆ ในอนาคต - รวม
Payload
เข้ากับResult
ตอนนี้Result
เป็น "คลาสที่ปิด" ที่มีการใช้งานจริง 3 รายการ ซึ่งคุณรับได้ผ่านResult.success()
(หรือResult.success(Data)
),Result.failure()
(หรือResult.failure(Data)
) และResult.retry()
ตอนนี้ListenableFuture
แสดงผลเป็นResult
แทนPayload
Worker
ไม่มีเมธอด getter และ setter สำหรับเอาต์พุตData
การเปลี่ยนแปลงนี้ส่งผลกับส่วนอื่นในระบบ - เพิ่ม
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
และConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
และตัวแปรเพื่อรองรับ URI ของเนื้อหาที่ทริกเกอร์ช้าได้ดียิ่งขึ้น b/119919774 - เพิ่มตัวแปร
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
แล้ว วิธีนี้ต้องใช้ API เวอร์ชัน 26 - เพิ่มเมธอดส่วนขยาย
Operation.await()
และListenableFuture.await()
ของ Kotlin - เปลี่ยนชื่อ
Operation.getException()
เป็นOperation.getThrowable()
แล้ว การเปลี่ยนแปลงนี้ส่งผลกับส่วนอื่นในระบบ - คลาส
ContentUriTriggers
และเมธอดที่อ้างอิงคลาสดังกล่าวไม่พร้อมให้บริการแก่ผู้ใช้ทั่วไปอีกต่อไป การเปลี่ยนแปลงนี้ส่งผลกับส่วนอื่นในระบบ - นําเมธอด varargs ที่เหลือใน
WorkManager
,WorkContinuation
และOneTimeWorkRequest
ออกเพื่อปรับปรุงประสิทธิภาพของ API หากต้องการแก้ไขปัญหาการสร้าง ให้ตัดข้อมูล varargs ที่มีอยู่ด้วยArrays.asList(...)
เรายังคงรวมเมธอดแต่ละรายการเวอร์ชันที่มีอาร์กิวเมนต์เดียวไว้ด้วย การเปลี่ยนแปลงนี้ส่งผลกับส่วนอื่นในระบบ - นำ
WorkContinuation.combine(OneTimeWorkRequest, *)
รูปแบบออกแล้ว มีการนำเสนอ API ที่ทำให้สับสน เมธอดcombine
ที่มีอยู่เข้าใจง่ายกว่า การเปลี่ยนแปลงนี้ส่งผลกับส่วนอื่นในระบบ
การแก้ไขข้อบกพร่อง
- การติดตั้งใช้งานก่อน Marshmallow เชื่อถือได้มากขึ้นในการกู้คืนจากกระบวนการที่หยุดทำงานของงานที่ดำเนินการอยู่
LiveData
ที่สังเกตผ่านobserveForever
จะได้รับการติดตามผ่าน WorkManager การอัปเดตนี้เป็นการนำการแก้ไขไลบรารี Room ไปไว้ในรุ่นเก่า b/74477406- ตอนนี้
Data.Builder.build()
จะแสดงข้อยกเว้นหากออบเจ็กต์ที่แปลงเป็นอนุกรมมีขนาดใหญ่เกินขนาดสูงสุด ก่อนหน้านี้ปัญหานี้จะเกิดขึ้นในเธรดเบื้องหลังที่คุณจัดการไม่ถูกต้องเท่านั้น - แยกแยะงานหยุดทำงานกับงานยกเลิก
getWorkInfoById()
จะแสดงผลWorkInfo
ที่มีCANCELLED
State
ระหว่างListenableWorker.onStopped()
- ถือว่า
null
Result
รายการเป็น "ไม่ผ่าน" ในListenableWorker
b/120362353 - การแก้ไขโดยประมาณสำหรับ Shield Tablet ที่ใช้ API 24 ซึ่งบางครั้งจะแสดง
IllegalArgumentException
b/119484416
การเปลี่ยนแปลง API ที่ทำให้เกิดข้อขัดข้อง
- เรานำการรองรับ Firebase JobDispatcher ออกแล้วเนื่องจากจะเลิกใช้งานในเร็วๆ นี้ ซึ่งหมายความว่าจะไม่มีอัปเดตอาร์ติแฟกต์
work-firebase
อีกต่อไปเมื่อเราเข้าสู่ระยะเบต้า เราจะพิจารณาเพิ่มทางเลือกอื่นๆ ในอนาคต - รวม
Payload
เข้ากับResult
ตอนนี้Result
เป็น "คลาสที่ปิด" ที่มีการใช้งานจริง 3 รายการ ซึ่งคุณรับได้ผ่าน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 หากต้องการแก้ไขปัญหาการสร้าง ให้ตัดข้อมูล 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
แล้ว การเปลี่ยนแปลงนี้ส่งผลกับส่วนอื่นในระบบ - Setter ใน
Constraints
ไม่ได้อยู่ใน API สาธารณะอีกต่อไป การเปลี่ยนแปลงนี้ส่งผลกับส่วนอื่นในระบบ WorkerParameters.getTriggeredContentUris()
และWorkerParameters.getTriggeredContentAuthorities()
ซึ่งเป็นอาร์เรย์ที่แสดงผลก่อนหน้านี้ ตอนนี้เมธอดเหล่านี้จะแสดงคอลเล็กชัน การเปลี่ยนแปลงนี้ส่งผลกับส่วนอื่นในระบบ- เปลี่ยนชื่อ
ListenableWorker.onStartWork()
เป็นListenableWorker.startWork()
การเปลี่ยนแปลงนี้ส่งผลกับส่วนอื่นในระบบ - ตัวสร้างของ
WorkStatus
ไม่ได้เป็นส่วนหนึ่งของ API สาธารณะอีกต่อไป การเปลี่ยนแปลงนี้ส่งผลกับส่วนอื่นในระบบ Configuration.getMaxJobSchedulerID()
และConfiguration.getMinJobSchedulerID()
จะเปลี่ยนชื่อเป็นConfiguration.getMinJobSchedulerId()
และConfiguration.getMaxJobSchedulerId()
ตามลำดับ การเปลี่ยนแปลงนี้ส่งผลกับส่วนอื่นในระบบ- เพิ่มคำอธิบายประกอบ
@NonNull
จำนวนมากลงใน API สาธารณะเพื่อปรับปรุงการยศาสตร์ของ API - เพิ่ม
WorkManager.enqueueUniqueWork()
API เพื่อจัดคิวOneTimeWorkRequest
ที่ไม่ซ้ำกันโดยไม่ต้องสร้างWorkContinuation
- ตอนนี้เมธอด
enqueue
และcancel
รูปแบบทั้งหมดในWorkManager
จะแสดงผลเป็นประเภทOperation
ใหม่ การเปลี่ยนแปลงนี้ส่งผลกับส่วนอื่นในระบบ enqueue
ทุกรูปแบบไม่ยอมรับตัวแปรของWorkRequest
อีกต่อไป การเปลี่ยนแปลงนี้ส่งผลกับส่วนอื่นในระบบ ให้ใช้คอลเล็กชันแทน คุณสามารถใช้Arrays.asList()
เพื่อแก้ไขโค้ดที่มีอยู่ เราทําเช่นนี้เพื่อลดจำนวนแพลตฟอร์มและเมธอด API- การพยายาม
initialize
WorkManager
มากกว่า 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
แล้ว - Setter ใน
Constraints
ไม่ได้อยู่ใน API สาธารณะอีกต่อไป WorkerParameters.getTriggeredContentUris()
และWorkerParameters.getTriggeredContentAuthorities()
ซึ่งเป็นอาร์เรย์ที่แสดงผลก่อนหน้านี้ ตอนนี้เมธอดเหล่านี้จะแสดงคอลเล็กชัน- เปลี่ยนชื่อ
ListenableWorker.onStartWork()
เป็นListenableWorker.startWork()
- ตัวสร้างของ
WorkStatus
ไม่ได้เป็นส่วนหนึ่งของ API สาธารณะอีกต่อไป Configuration.getMaxJobSchedulerID()
และConfiguration.getMinJobSchedulerID()
จะเปลี่ยนชื่อเป็นConfiguration.getMinJobSchedulerId()
และConfiguration.getMaxJobSchedulerId()
ตามลำดับ- ตอนนี้ตัวแปรทั้งหมดของเมธอด
enqueue
และcancel
ในWorkManager
จะแสดงผลเป็นประเภทOperation
ใหม่ enqueue
ทุกรูปแบบไม่ยอมรับตัวแปรของWorkRequest
อีกต่อไป- การพยายาม
initialize
WorkManager
มากกว่า 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 (เมื่อมีการเผยแพร่เวอร์ชันที่เสถียร) และ 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
- เราได้จัดเตรียมตัวแปร
ListenableFuture
และเปลี่ยนชื่อเมธอดที่มีอยู่ซึ่งแสดงผลLiveData
ให้รวม "LiveData" ไว้ในชื่ออย่างชัดเจน (เช่นgetStatusesByIdLiveData(UUID)
) เพื่อรักษาภาวะ (Parity) กับเมธอดgetStatus*
แบบซิงค์ การเปลี่ยนแปลงนี้เป็นการทําให้ API ใช้งานไม่ได้
- ตอนนี้คุณสามารถรับและสังเกตการณ์แบบซิงค์กันโดยใช้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ทราบจาก alpha09 เกี่ยวกับไฟล์
androidx-annotations.pro
ซ้ำ คุณสามารถนำวิธีแก้ปัญหานี้ออกจากหมายเหตุประจำรุ่นก่อนหน้าได้โดยลบexclude 'META-INF/proguard/androidx-annotations.pro'
ออกจากไฟล์ gradle - เพิ่มการกําหนดค่า ProGuard เพื่อเก็บคอนสตรัคเตอร์
Worker
ใหม่ b/116296569 - แก้ไข
NullPointerException
ที่อาจเกิดขึ้นในเงื่อนไขการแข่งขันที่งานถูกREPLACE
b/116253486 และ b/116677275 - ตอนนี้
WorkContinuation.combine()
ยอมรับWorkContinuation
อย่างน้อย 1 รายการแทนที่จะเป็น 2 รายการขึ้นไป b/117266752
การเปลี่ยนแปลง API ที่ทำให้เกิดข้อขัดข้อง
- นําเมธอดและคลาส
deprecated
ทั้งหมดก่อนหน้านี้ออก โดยเฉพาะตัวสร้างWorker
เริ่มต้น - อินเทอร์เฟซ
WorkerFactory
และการใช้งานจริงDefaultWorkerFactory
ได้รวมกันเป็นคลาสนามธรรมชื่อWorkerFactory
แล้ว - นำ
WorkManager.synchronous()
และWorkContinuation.synchronous()
ออกแล้ว - ตอนนี้เมธอด
WorkManager.getStatus*()
จะแสดงผลListenableFuture
WorkManager.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.Configuration
โรงงานสำรองคือ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
เพื่อระบุว่าขีดจํากัดคือ 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
แต่หากไม่ได้เริ่มต้นค่า 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
ซ้ำเมื่อใช้JobScheduler
b/110798652 - แก้ไขปัญหาที่
PeriodicWorkRequest
ทำงานไม่ถูกต้องหลังจากอุปกรณ์เข้าสู่โหมดสลีป b/111469837 - แก้ไขปัญหาความล่าช้าในช่วงแรกเมื่อใช้ Firebase JobDispatcher b/111141023
- แก้ไขเงื่อนไขการแข่งขันและปัญหาด้านเวลาที่อาจเกิดขึ้น
- ปล่อย
BroadcastReceiver
ที่ไม่จําเป็นต้องใช้แล้วอย่างถูกต้อง - เพิ่มประสิทธิภาพการกําหนดเวลาใหม่เมื่อแอปรีสตาร์ทหลังจากถูกบังคับปิด
- อนุญาตให้เรียก
TestScheduler.setAllConstraintsMet(UUID)
ก่อนหรือหลังจัดคิวWorkRequest
ที่ให้ไว้ b/111238024
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
- ตอนนี้
WorkManager.getInstance()
มีคำอธิบายประกอบเป็น@NonNull
แทน@Nullable
- เปลี่ยนลายเซ็นของ
Data.getString()
เพื่อไม่ให้ใช้ค่าเริ่มต้นอีกต่อไป (โดยค่าเริ่มต้นจะเป็นnull
) - ทำเครื่องหมายเมธอดบางอย่างที่จําเป็นสําหรับการใช้งานภายในเท่านั้นเป็น
@hide
ซึ่งรวมถึงตัวสร้างConstraints
,Data.toByteArray()
และData.fromByteArray(byte[])
เวอร์ชัน 1.0.0-alpha04
26 มิถุนายน 2018
การแก้ไขข้อบกพร่อง
- ตอนนี้
PeriodicWorkRequest
จะกำหนดเวลาใหม่อย่างถูกต้องเมื่อใช้การติดตั้งใช้งานตามAlarmManager
- แก้ไข ANR ที่อาจเกิดขึ้นเมื่อกำหนดเวลาผู้ปฏิบัติงานทั้งหมดใหม่หลังจากการบังคับหยุดหรือรีบูต b/110507716
- เพิ่มการกำกับเนื้อหาเกี่ยวกับ Nullability ลงใน WorkManager API ต่างๆ b/110344065
- บันทึกข้อยกเว้นที่ตรวจไม่พบซึ่งเกิดขึ้นระหว่างการดำเนินการของ Worker b/109900862
- อนุญาตให้ย้ายข้อมูลฐานข้อมูลที่ทำลายข้อมูลได้ในกรณีที่คุณตัดสินใจที่จะเปลี่ยนกลับไปใช้ WorkManager เวอร์ชันเก่า b/74633270
- แก้ไขข้อขัดข้องในการย้ายข้อมูลหากสร้างแท็กโดยนัยซ้ำ ปัญหานี้เกิดขึ้นได้น้อยมากเฉพาะในกรณีที่คุณใช้รูปแบบแท็กที่ไม่ระบุแหล่งที่มาเดียวกัน
เวอร์ชัน 1.0.0-alpha03
19 มิถุนายน 2018
การแก้ไขข้อบกพร่อง
แก้ไขเงื่อนไขการแข่งขันในการใช้งานตาม
AlarmManager
b/80346526แก้ไขงานซ้ำเมื่อใช้
JobScheduler
หลังจากรีบูตอุปกรณ์ตอนนี้งานที่มีทริกเกอร์ URI ของเนื้อหาจะยังคงอยู่หลังจากการรีบูต b/80234744
การอัปเดตเอกสารประกอบ b/109827628, b/109758949, b/80230748
แก้ไขข้อขัดข้องเมื่อจัดคิว
WorkRequest
อีกครั้ง b/109572353แก้ไขคำเตือนเกี่ยวกับคอมไพเลอร์ Kotlin เมื่อใช้
work-runtime-ktx
ตอนนี้ WorkManager ใช้
Room
เวอร์ชัน1.1.1-rc1
การเปลี่ยนแปลง API
- เพิ่ม
getStatusesSync()
ซึ่งเป็นWorkContinuation.getStatuses()
เวอร์ชันแบบเรียลไทม์ Worker
สามารถแยกความแตกต่างระหว่างการยกเลิกที่ผู้ใช้เริ่มและการหยุดชั่วคราวที่ระบบปฏิบัติการขอWorker.isStopped()
จะแสดงผลเป็นtrue
หากมีการส่งคำขอหยุดทำงานWorker.isCancelled()
จะแสดงผลเป็นtrue
เมื่อมีการยกเลิกงานอย่างชัดเจน b/79632247- เพิ่มการรองรับ JobParameters#getNetwork() ใน API 28 ซึ่งแสดงผ่าน
Worker.getNetwork()
- เพิ่ม
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
เพื่อให้คุณบังคับจำนวนงานที่ส่งไปยังJobScheduler
หรือAlarmManager
ได้ วิธีนี้จะช่วยป้องกันไม่ให้WorkManager
ใช้ช่องJobScheduler
ที่มีอยู่ทั้งหมด - เพิ่ม
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
ซึ่งช่วยกำหนดช่วงรหัสงานJobScheduler
ที่ปลอดภัยสำหรับWorkManager
b/79996760 Worker.getRunAttemptCount()
จะแสดงจํานวนการเรียกใช้ปัจจุบันสําหรับWorker
ที่ระบุ b/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
หรือเมื่อ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
- ย้ายการล้าง Wake Lock ที่เชื่อมโยงกับ
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()
สามารถใช้เพื่อดำเนินการล้างข้อมูลแบบเบาWorker.getTags()
API จะแสดงผลSet
แท็กที่เชื่อมโยงกับWorker
- เพิ่ม
javax.time.Duration
overload สำหรับ 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