WorkManager

WorkManager API ช่วยให้คุณกำหนดเวลางานแบบเลื่อนเวลาได้และแบบไม่พร้อมกันซึ่งต้องทำงานอย่างน่าเชื่อถือได้อย่างง่ายดาย API เหล่านี้ช่วยให้คุณสร้างงานและส่งต่อให้ WorkManager เพื่อเรียกใช้เมื่อมีข้อจำกัดด้านงาน
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า เวอร์ชันอัลฟ่า
30 ตุลาคม 2024 2.10.0 - - -

การประกาศทรัพยากร Dependency

หากต้องการเพิ่มการพึ่งพา WorkManager คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ โดยทำดังนี้

เพิ่มการพึ่งพาสำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับแอปหรือโมดูล

ดึงดูด

dependencies {
    def work_version = "2.9.1"

    // (Java only)
    implementation "androidx.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "androidx.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "androidx.work:work-rxjava2:$work_version"

    // optional - GCMNetworkManager support
    implementation "androidx.work:work-gcm:$work_version"

    // optional - Test helpers
    androidTestImplementation "androidx.work:work-testing:$work_version"

    // optional - Multiprocess support
    implementation "androidx.work:work-multiprocess:$work_version"
}

Kotlin

dependencies {
    val work_version = "2.9.1"

    // (Java only)
    implementation("androidx.work:work-runtime:$work_version")

    // Kotlin + coroutines
    implementation("androidx.work:work-runtime-ktx:$work_version")

    // optional - RxJava2 support
    implementation("androidx.work:work-rxjava2:$work_version")

    // optional - GCMNetworkManager support
    implementation("androidx.work:work-gcm:$work_version")

    // optional - Test helpers
    androidTestImplementation("androidx.work:work-testing:$work_version")

    // optional - Multiprocess support
    implementation("androidx.work:work-multiprocess:$work_version")
}

ดูข้อมูลเกี่ยวกับการใช้ส่วนขยาย Kotlin ได้ที่เอกสารประกอบ ktx

ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์

ความคิดเห็น

ความคิดเห็นของคุณช่วยให้เราปรับปรุง 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 จะแสดงข้อมูลเกี่ยวกับ Nullability ที่ถูกต้อง ซึ่งอาจต้องมีการแก้ไขซอร์สโค้ดของลูกค้าหากการคาดคะเนเกี่ยวกับ 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

เวอร์ชัน 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 หลังจากที่มีการเรียกใช้ Executor ซึ่งอาจเป็นประโยชน์ในการรายงาน stopReason ในลักษณะที่ใช้งานได้ เนื่องจากเมื่อหยุดเวิร์กเกอร์แล้ว แอปเองก็อาจหยุดทำงานอย่างรวดเร็ว (I21386)
  • อนุญาตให้ตั้งค่านาฬิกาผ่านการกำหนดค่าและใช้เพื่อกำหนดลำดับการดำเนินการของการทดสอบ Worker (Ic586e)
  • เพิ่มเมธอด getStopReason() ลงใน ListenableWorker ซึ่งให้คำแนะนำเกี่ยวกับสาเหตุที่หยุดผู้ปฏิบัติงาน (I07060)
  • เพิ่ม WorkManagerTestInitHelper#closeWorkDatabase() เพื่อหลีกเลี่ยงคำเตือนของ Closeguard เกี่ยวกับทรัพยากรที่รั่วไหล (Ia8d49)

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

  • เพิ่มความสามารถในการข้าม overrideNextScheduleTime โดยใช้ TestDriver และแก้ไขปัญหาความสามารถในการทดสอบ (Ic2905)

เวอร์ชัน 2.9.0-alpha01

7 มิถุนายน 2023

ปล่อย androidx.work:work-*:2.9.0-alpha01 แล้ว เวอร์ชัน 2.9.0-alpha01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • การสังเกตการณ์ผ่าน 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 ที่กําลังทํางานอยู่
    • 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 ที่กําลังทํางานอยู่
    • 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)
  • แก้ไขข้อผิดพลาดเกี่ยวกับ Lint IssueRegistry ของ 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)
  • เพิ่มกฎ lint เพื่อให้แน่ใจว่ามีการระบุ 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 เบื้องหน้าใหม่ใน 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
  • เพิ่มการเรียกใช้การป้องกันบางอย่างไปยัง 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 วิธีตั้งค่าโปรเจ็กต์สำหรับการเริ่มต้นใช้งานแบบออนดีมานด์มีดังนี้
    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 หากต้องการแก้ไขปัญหาการสร้าง ให้ใส่ Arrays.asList(...) ไว้รอบๆ varargs ที่มีอยู่ เรายังคงรวมเมธอดแต่ละรายการเวอร์ชันที่มีอาร์กิวเมนต์เดียวไว้ด้วย การเปลี่ยนแปลงนี้ส่งผลกับส่วนอื่นในระบบ
  • นำตัวแปร 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 หากต้องการแก้ไขปัญหาการสร้าง ให้ใส่ Arrays.asList(...) ไว้รอบๆ varargs ที่มีอยู่ เรายังคงรวมเมธอดแต่ละรายการเวอร์ชันที่มีอาร์กิวเมนต์เดียวไว้ด้วย
  • นำ 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 เพื่อระบุว่าขีดจำกัดคือ 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/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