WorkManager

WorkManager API ช่วยให้คุณกำหนดเวลางานแบบเลื่อนเวลาได้และแบบไม่พร้อมกันซึ่งต้องทำงานอย่างน่าเชื่อถือได้อย่างง่ายดาย API เหล่านี้ช่วยให้คุณสร้างงานและส่งต่อให้ 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

เวอร์ชัน 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

การแก้ไขข้อบกพร่อง

  • เมื่อกำหนดเวลางานด่วนใหม่แล้ว งานดังกล่าวจะไม่ด่วนอีกต่อไป แต่จะกลายเป็นงานปกติ

เวอร์ชัน 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)

การเปลี่ยนแปลง 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-ing setProgress 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 วิธีตั้งค่าโปรเจ็กต์สําหรับการเริ่มต้นแบบออนดีมานด์
    1. ปิดใช้ตัวเริ่มต้นอัตโนมัติ
    2. ใช้ Configuration.Provider กับออบเจ็กต์ Application ที่กําหนดเอง
    3. เปลี่ยนการอ้างอิง 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 วิธีตั้งค่าโปรเจ็กต์สําหรับการเริ่มต้นแบบออนดีมานด์มีดังนี้
    1. ปิดใช้ตัวเริ่มต้นอัตโนมัติ
    2. ใช้ Configuration.Provider กับออบเจ็กต์ Application ที่กําหนดเอง
    3. เปลี่ยนการอ้างอิง WorkManager.getInstance() ทั้งหมดเป็น WorkManager.getInstance(Context) การเปลี่ยนแปลงนี้ทำให้เราต้องเลิกใช้งาน WorkManager.getInstance() การเรียกใช้WorkManager.getInstance(Context)เปลี่ยนทดแทนใหม่จะปลอดภัยกว่าเสมอ แม้ว่าคุณจะไม่ได้ทำการเริ่มต้นใช้งานแบบออนดีมานด์ก็ตาม
  • เพิ่มความสามารถในการสร้างคลาส Worker และ ListenableWorker ที่ทดสอบได้ระดับหน่วยโดยใช้ TestWorkerBuilder และ TestListenableWorkerBuilder ในอาร์ติแฟกต์ work-testing
    • โปรดทราบว่าตอนนี้ work-testing จะดึงข้อมูล Kotlin มาใช้เป็นข้อกำหนดเบื้องต้น แต่ก็รวมส่วนขยาย Kotlin หลายรายการไว้โดยค่าเริ่มต้นด้วย
  • เพิ่มจํานวนการพยายามเรียกใช้เป็น WorkInfo b/127290461
  • ตอนนี้ประเภท Data สามารถจัดเก็บและเรียกดูไบต์และอาร์เรย์ไบต์ได้แล้ว ซึ่งจะไม่เปลี่ยนขนาดสูงสุดของออบเจ็กต์ Data
  • เลิกใช้งาน CoroutineWorker.coroutineContext ช่องนี้พิมพ์เป็น CoroutineDispatcher อย่างไม่ถูกต้อง คุณไม่ควรต้องใช้อีกต่อไปเนื่องจากสามารถไปที่ coroutineContext ที่ต้องการด้วยตนเองในเนื้อหาของฟังก์ชันที่ระงับได้
  • ตอนนี้ RxWorker.createWork() และ RxWorker.getBackgroundScheduler() ได้รับการกำกับเนื้อหาด้วยประเภทผลลัพธ์ @NonNull แล้ว

เวอร์ชัน 2.0.1

เวอร์ชัน 2.0.1

9 เมษายน 2019

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

ดูข้อมูลเกี่ยวกับการใช้ส่วนขยาย Kotlin ได้ที่เอกสารประกอบ KTX
เอกสารอ้างอิง: 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 dependency 1.1.1 แทน 1.1.1-rc01 เวอร์ชันเหล่านี้เหมือนกัน b/122578011

เวอร์ชัน 1.0.0-beta01

19 ธันวาคม 2018

รุ่นนี้ไม่มีการเปลี่ยนแปลง API และนับจากนี้ไป WorkManager จะใช้ API ที่เสถียรจนถึงเวอร์ชันถัดไป เว้นแต่จะเกิดปัญหาร้ายแรง รุ่นนี้มีการแก้ไขข้อบกพร่องบางอย่าง

การแก้ไขข้อบกพร่อง

  • งานที่ยกเลิกไปก่อนหน้านี้ซึ่งทำงานหลักเสร็จสมบูรณ์แล้วจะไม่ทำงานอีกต่อไป b/120811767
  • คลาสการบันทึกที่เริ่มต้นอย่างถูกต้อง (แสดงขึ้นในระหว่างการทดสอบเป็นหลัก)

เวอร์ชัน 1.0.0-alpha13

12 ธันวาคม 2018

เวอร์ชันนี้มีการเปลี่ยนแปลง API เล็กน้อยที่เป็นประโยชน์ต่อผู้ใช้ Kotlin บางราย

การเปลี่ยนแปลง API

  • ย้าย androidx.work.Result ไปอยู่ในคลาสย่อยของ ListenableWorker แล้ว วิธีนี้จะช่วยป้องกันไม่ให้การปรับโครงสร้างขัดแย้งกับคลาส Result ระดับบนสุดของ Kotlin นี่คือการเปลี่ยนแปลง API ที่ทำให้เกิดข้อขัดข้อง b/120564418

การเปลี่ยนแปลง API ที่ทำให้เกิดข้อขัดข้อง

  • ย้าย androidx.work.Result ไปอยู่ในคลาสย่อยของ ListenableWorker แล้ว

เวอร์ชัน 1.0.0-alpha12

5 ธันวาคม 2018

รุ่นนี้มีการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นบางส่วน โปรดดูส่วนการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นด้านล่าง เวอร์ชันนี้มีโอกาสที่จะเปิดตัวเป็นเวอร์ชันเบต้าเวอร์ชันแรก alpha12 ยังมีเอกสารประกอบที่อัปเดตอย่างครอบคลุมด้วย

การเปลี่ยนแปลง API

  • อาร์ติแฟกต์ใหม่ work-rxjava2 เปิดตัว RxWorker นี่คือ ListenableWorker ที่คาดหวัง Single<Payload>
  • เรานำการรองรับ Firebase JobDispatcher ออกแล้วเนื่องจากจะเลิกใช้งานในเร็วๆ นี้ ซึ่งหมายความว่าจะไม่มีอัปเดตอาร์ติแฟกต์ work-firebase อีกต่อไปเมื่อเราเข้าสู่ระยะเบต้า เราจะพิจารณาเพิ่มทางเลือกอื่นๆ ในอนาคต
  • รวม Payload เข้ากับ Result ตอนนี้ Result เป็น "คลาสที่ปิด" ที่มีการใช้งานจริง 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/79716516
  • WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) ช่วยให้คุณจัดคิว PeriodicWorkRequest ที่ไม่ซ้ำกันได้ b/79600647
  • WorkManager.cancelAllWork() ยกเลิก Worker ทั้งหมด ไลบรารีที่ขึ้นอยู่กับ WorkManager สามารถค้นหาเวลาที่เรียกใช้เมธอดนี้ครั้งล่าสุดได้โดยใช้ WorkManager.getLastCancelAllTimeMillis() เพื่อล้างสถานะภายในเพิ่มเติม
  • เพิ่ม WorkManager.pruneWork() เพื่อนำงานที่เสร็จแล้วออกจากฐานข้อมูลภายใน b/79950952, b/109710758

การเปลี่ยนแปลงลักษณะการทำงาน

  • เพิ่มแท็กโดยนัยสำหรับ WorkRequest ทั้งหมด ซึ่งเป็นชื่อคลาสที่สมบูรณ์ในตัวเองของ Worker ซึ่งช่วยให้นำWorkRequestออกได้โดยไม่ต้องมีtagหรือเมื่อidไม่พร้อมใช้งาน b/109572351

การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ

  • เปลี่ยนชื่อ Worker.WorkerResult เป็น Worker.Result แล้ว
  • ตอนนี้ Worker.onStopped มีพารามิเตอร์ isCancelled เพิ่มเติมซึ่งตั้งค่าเป็นtrue เมื่อมีการยกเลิก Worker อย่างชัดเจน

เวอร์ชัน 1.0.0-alpha02

24 พฤษภาคม 2018

การแก้ไขข้อบกพร่อง

  • แก้ไข NullPointerException แล้วเมื่อวันที่ State.isFinished() b/79550068
  • แก้ไขปัญหาที่ทำให้มีการกำหนดเวลา Worker ใหม่ในวันที่ Application.onCreate() b/79660657
  • แก้ไขปัญหาที่คุณกำหนดเวลางานได้มากกว่าที่ระบบปฏิบัติการอนุญาต b/79497378
  • ย้ายการล้าง 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