WorkManager
อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | เวอร์ชันอัลฟ่า |
---|---|---|---|---|
30 ตุลาคม 2024 | 2.9.1 | - | - | - |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มการพึ่งพา WorkManager คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ โดยทำดังนี้
เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle
สำหรับแอปหรือโมดูล
Groovy
dependencies { def work_version = "2.9.1" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.9.1" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
ดูข้อมูลเกี่ยวกับการใช้ส่วนขยาย Kotlin ได้ที่เอกสารประกอบ ktx
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมีแนวคิดในการปรับปรุงคลังนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดยคลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบเกี่ยวกับเครื่องมือติดตามปัญหา
เวอร์ชัน 2.10
เวอร์ชัน 2.10.0
30 ตุลาคม 2024
androidx.work:work-*:2.10.0
ได้รับการปล่อยแล้ว เวอร์ชัน 2.10.0 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สําคัญตั้งแต่เวอร์ชัน 2.9.1
- เพิ่มแท็กการติดตามไปยังงานจาก
WorkManager
ซึ่งทําให้ "adb shell dumpsys jobscheduler" เข้าใจง่ายขึ้นมากเนื่องจากจะมีชื่อของ Worker ที่กําลังดําเนินการ รวมถึงเพิ่มส่วนการติดตามรอบๆ พื้นที่สำคัญๆ ของWorkManager
ด้วย - เพิ่ม
Configuration.workerCoroutineContext
เพื่อควบคุมตัวจัดสรรที่เรียกใช้CoroutineWorker
- นักพัฒนาซอฟต์แวร์สามารถระบุ
NetworkRequest
เป็นข้อจำกัดสำหรับเวิร์กเกอร์ผ่านเมธอดConstraints.setRequiredNetworkRequest
วิธีนี้ช่วยให้คุณควบคุมเครือข่ายที่ควรเรียกใช้ผู้ปฏิบัติงานรายนี้ได้ละเอียดยิ่งขึ้น - ตอนนี้
WorkManager
2.10.0 คอมไพล์ด้วย SDK 35 และมีการเปลี่ยนแปลงต่างๆ เพื่อให้ใช้งานร่วมกับ SDK 35 ได้
เวอร์ชัน 2.10.0-rc01
24 ตุลาคม 2024
androidx.work:work-*:2.10.0-rc01
ได้รับการปล่อยแล้ว เวอร์ชัน 2.10.0-rc01 มีการคอมมิตเหล่านี้
เวอร์ชัน 2.10.0-beta01
2 ตุลาคม 2024
androidx.work:work-*:2.10.0-beta01
ได้รับการปล่อยแล้ว เวอร์ชัน 2.10.0-beta01 มีคอมมิตเหล่านี้
เวอร์ชัน 2.10.0-alpha04
18 กันยายน 2024
androidx.work:work-*:2.10.0-alpha04
ได้รับการปล่อยแล้ว เวอร์ชัน 2.10.0-alpha04 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มเหตุผลในการหยุด
STOP_REASON_FOREGROUND_SERVICE_TIMEOUT
สำหรับกรณีที่ระบบหยุดผู้ปฏิบัติงานที่ทำงานอยู่เบื้องหน้าเนื่องจากหมดเวลาดำเนินการตามประเภทบริการที่ทำงานอยู่เบื้องหน้า (Ibd0af)
เวอร์ชัน 2.10.0-alpha03
4 กันยายน 2024
androidx.work:work-*:2.10.0-alpha03
ได้รับการปล่อยแล้ว เวอร์ชัน 2.10.0-alpha03 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มแท็กการติดตามไปยังงานจาก
WorkManager
ซึ่งทําให้ "adb shell dumpsys jobscheduler" เข้าใจง่ายขึ้นมากเนื่องจากจะมีชื่อของ Worker ที่กําลังดําเนินการ นอกจากนี้ ระบบยังเพิ่มส่วนการติดตามรอบๆ พื้นที่หลักของWorkManager
ด้วย
การเปลี่ยนแปลง API
- ตอนนี้ WorkManager 2.10.0 คอมไพล์ด้วย SDK 35 แล้ว
- แก้ไขข้อบกพร่องเกี่ยวกับ Foreground Worker ประเภท "บริการระยะสั้น" และ "การซิงค์ข้อมูล" ที่หมดเวลาและทำให้เกิด 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
ในทางที่เป็นไปได้ เนื่องจากเมื่อหยุดผู้ปฏิบัติงานแล้ว ตัวแอปเองอาจถูกทำลายอย่างรวดเร็ว (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
ในลักษณะที่ใช้งานได้ เนื่องจากเมื่อหยุดการทํางานของ WOrker แล้ว แอปเองก็อาจหยุดทำงานอย่างรวดเร็ว (I21386) - อนุญาตให้ตั้งค่านาฬิกาผ่านการกำหนดค่าและใช้เพื่อเพิ่มลำดับการดำเนินการของการทดสอบผู้ปฏิบัติงาน (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
แทนที่จะใช้LiveData
ตอนนี้คุณสามารถดูความคืบหน้าของผู้ปฏิบัติงานผ่านโฟลว์ได้ผ่านทางWorkManager.getWorkInfosFlow
และใช้วิธีการที่คล้ายกัน - การตั้งเวลาอย่างแม่นยำของผู้ทำงานเป็นระยะผ่าน
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) - เมธอดที่เพิ่มจะสังเกตผู้ปฏิบัติงานผ่านโฟลว์ผ่านเมธอด
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) - เพิ่มเมธอดของ Help
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
- นํา API ของ
@ExperimentalExpeditedWork
ออกเนื่องจาก API ของแพลตฟอร์มที่เกี่ยวข้องสําหรับ Android 12 (S) มีความเสถียร (aosp/1792806)
การแก้ไขข้อบกพร่อง
- ระบุข้อความแสดงข้อผิดพลาดที่ดียิ่งขึ้นสำหรับผู้ปฏิบัติงานที่เร่งรัดที่ไม่ได้ใช้
getForegroundInfoAsync()
(aosp/1809376)
เวอร์ชัน 2.7.0-alpha05
21 กรกฎาคม 2021
ปล่อย androidx.work:work-*:2.7.0-alpha05
แล้ว เวอร์ชัน 2.7.0-alpha05 มีคอมมิตเหล่านี้
รุ่นนี้มีการแก้ไขข้อบกพร่องจากรุ่น WorkManager 2.6.0-beta02
ด้วย
เวอร์ชัน 2.7.0-alpha04
2 มิถุนายน 2021
ปล่อย androidx.work:work-*:2.7.0-alpha04
แล้ว
เวอร์ชันนี้ยังมีการเปลี่ยนแปลงจากรุ่น 2.6.0-beta01 ด้วย
การเปลี่ยนแปลง API
ListenableWorker.setForegroundAsync()
เลิกใช้งานแล้ว- เราขอแนะนำให้ใช้
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 ที่กำลังทำงาน
- 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
ที่ถูกต้องเมื่อใช้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 ที่กำลังทำงาน
- WorkRequests ที่กำหนดเวลาไว้ (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)
- ปรับปรุงวงจรการจัดการบริการที่ทำงานอยู่เบื้องหน้าสำหรับผู้ปฏิบัติงานที่ใช้เวลานาน (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
กำหนดทรัพยากร 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)
- เพิ่มกฎ 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 โดยอัตโนมัติ หากบริการ Google Play ไม่พร้อมใช้งาน WorkManager จะเปลี่ยนกลับไปเป็น Alarm Manager ในอุปกรณ์รุ่นเก่าต่อไป
เวอร์ชัน 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 ให้เพิ่มทรัพยากร Dependency นี้ลงในไฟล์ Gradle เพื่อรับการสนับสนุน GCMNetworkManager โดยอัตโนมัติ หากบริการ Google Play ไม่พร้อมใช้งาน WorkManager จะเปลี่ยนกลับไปเป็น Alarm Manager ในอุปกรณ์รุ่นเก่าต่อไป
แก้ไขข้อบกพร่อง
- แก้ปัญหาสำหรับ
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
- เพิ่มการเรียกเชิงป้องกันบางส่วนไปยัง JobScheduler API สำหรับอุปกรณ์ที่ทำงานผิดปกติ
เวอร์ชัน 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 ที่เสถียรซึ่งมีทรัพยากร Dependency ของ 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
ดึงดูด
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
- แก้ไขข้อขัดข้องของ EDGE Case ที่มีข้อจำกัดการติดตามไม่ได้รับการล้างใน API ของ Pre-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 รายการ
การแก้ไขข้อบกพร่อง
- ตอนนี้การใช้งาน Alarm Manager ดำเนินการตามหน้าต่าง
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 - แก้ไขกรณีที่การทำงานไม่ยึดตามระยะเวลา Backoff อย่างเหมาะสม b/122881597
- แก้ไข
ConcurrentModificationException
ในอุปกรณ์ที่ใช้ Android 5.1 (API หรือต่ำกว่า) การอัปเดตนี้เป็นการแก้ไขต่อเนื่องจาก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 ใช้ - ย้ายไปใช้ทรัพยากร Dependency
1.1.1
ของRoom
แทน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 - เพิ่มเมธอดส่วนขยาย 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 นี่เป็นพอร์ตสำรองของการแก้ไขคลังห้องแชท b/74477406- ตอนนี้
Data.Builder.build()
จะแสดงข้อยกเว้นหากออบเจ็กต์ที่แปลงเป็นอนุกรมมีขนาดใหญ่เกินขนาดสูงสุด โดยก่อนหน้านี้จะเกิดขึ้นเฉพาะในชุดข้อความพื้นหลังที่คุณไม่สามารถจัดการได้อย่างเหมาะสม - แยกแยะงานหยุดทำงานกับงานยกเลิก
getWorkInfoById()
จะแสดงผลWorkInfo
ที่มีCANCELLED
State
ระหว่างListenableWorker.onStopped()
- ถือว่า
null
Result
ทำงานไม่สำเร็จในListenableWorker
b/120362353 - การแก้ไขแบบคาดเดาสำหรับแท็บเล็ต Shield ที่ใช้ API 24 ซึ่งมี
IllegalArgumentException
ในบางครั้ง b/119484416
การเปลี่ยนแปลง API ที่ส่งผลต่อการใช้งาน
- ระบบนำการรองรับ Firebase JobDispatcher ออกแล้วเนื่องจากจะเลิกใช้งานในเร็วๆ นี้ ซึ่งหมายความว่าอาร์ติแฟกต์
work-firebase
จะไม่อัปเดตอีกต่อไปเมื่อเราเข้าสู่รุ่นเบต้า เราจะเพิ่มทางเลือกอื่นในอนาคต - รวม
Payload
เข้ากับResult
แล้ว ตอนนี้Result
เป็น "คลาสที่ปิด" ที่มีการใช้งานจริง 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
แล้ว การเปลี่ยนแปลงนี้ส่งผลกับส่วนอื่นในระบบ - ตัวตั้งค่าใน
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
- เพื่อคงความสอดคล้องกับเมธอด
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
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- บังคับใช้การหน่วงเวลา Backoff ขั้นต่ำที่ถูกต้องสำหรับ Firebase JobDispatcher b/113304626
- การแยกชุดข้อความที่ปรับปรุงแล้วรับประกันภายในคลัง
- แก้ไขปัญหาที่อาจเกิดขึ้นเกี่ยวกับการกรองข้อมูล
LiveData
ซ้ำกันภายใน
การเปลี่ยนแปลง API
- ตอนนี้คุณสร้างอินสแตนซ์
Worker
ของคุณเองระหว่างรันไทม์ได้แล้ว โดยระบุWorkerFactory
เป็นส่วนหนึ่งของWorkManager.Configuration
โรงงานสำรองคือDefaultWorkerFactory
ซึ่งตรงกับลักษณะการทำงานของ WorkManager เวอร์ชันก่อนหน้า- ตอนนี้ตัวสร้างเริ่มต้นสำหรับ
Worker
และNonBlockingWorker
ถูกทำเครื่องหมายเป็นเลิกใช้งานแล้ว โปรดใช้เครื่องมือสร้างแบบใหม่ (Worker(Context, WorkerParameters)
) และเรียกใช้super(Context, WorkerParameters)
เนื่องจาก WorkManager เวอร์ชันในอนาคตจะนำเครื่องมือสร้างเริ่มต้นออก
- ตอนนี้ตัวสร้างเริ่มต้นสำหรับ
- เราเริ่มใช้อาร์ติแฟกต์
ListenableFuture
ใหม่เป็นการภายในแล้ว (ไม่มีทรัพยากร Dependency ของ 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
ใน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
สำหรับ 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