WorkManager

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

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

หากต้องการเพิ่มทรัพยากร Dependency ใน WorkManager คุณต้องเพิ่มที่เก็บ Google Maven ไปยัง โปรเจ็กต์:

เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่คุณต้องการในไฟล์ 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

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

ความคิดเห็น

ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากคุณพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูที่ ปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนที่จะสร้างใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว

สร้างรายการใหม่

ดูเอกสารประกอบเกี่ยวกับเครื่องมือติดตามปัญหา เพื่อดูข้อมูลเพิ่มเติม

เวอร์ชัน 2.10

เวอร์ชัน 2.10.0-alpha03

4 กันยายน 2024

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

ฟีเจอร์ใหม่

  • เพิ่มแท็กการติดตามใน Google ค้นงานจาก WorkManager ซึ่งทำให้เข้าใจ "adb shell dumpsys jobsscheduler" ได้ง่ายขึ้น เนื่องจากจะมีชื่อของผู้ปฏิบัติงานที่กำลังดำเนินการ รวมถึงเพิ่มส่วนการติดตามรอบๆ พื้นที่สำคัญๆ ของ WorkManager ด้วย

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

  • ขณะนี้ WorkManager 2.10.0 ได้รับการคอมไพล์ด้วย SDK 35 แล้ว
  • แก้ไขการหมดเวลาของผู้ปฏิบัติงานที่ทำงานอยู่เบื้องหน้าประเภท "บริการแบบสั้น" และ "การซิงค์ข้อมูล" และทำให้เกิด ANR เมื่อ WorkManager ไม่เรียกใช้ stopSelf() การแก้ไขนี้ใช้กับอุปกรณ์ที่มี API 34 และ 35 ซึ่งมีการแนะนำประเภทบริการที่ทำงานอยู่เบื้องหน้าเท่านั้น (ca06b2, b/364508145)
  • API ใหม่ของ WorkerParameters ที่ทำให้เปลี่ยนกระบวนการระยะไกลที่ 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

  • เพิ่มความสามารถในการแสดง Span ของการติดตามผ่าน @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 จะให้ข้อมูลความสามารถในการเว้นว่างที่ถูกต้อง อาจต้องมีการเปลี่ยนแปลงในไคลเอ็นต์ ซอร์สโค้ด หากสมมติฐานความสามารถในการเว้นว่างในโค้ดนั้นไม่ถูกต้อง (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 - วินาที แทนที่จะใช้ LiveData ตอนนี้คุณสามารถดูความคืบหน้าของผู้ปฏิบัติงานผ่านโฟลว์ได้ผ่านทาง WorkManager.getWorkInfosFlow และใช้วิธีการที่คล้ายกัน
  • ตอนนี้ WorkManager จะให้ข้อมูลเกี่ยวกับสาเหตุที่ผู้ปฏิบัติงานหยุดทำงานก่อนหน้านี้ โดยจะค้นหาได้จากผู้ปฏิบัติงานเองโดยใช้เมธอด getStopReason() หรือจาก WorkInfo โดยใช้ getStopReason()
  • การตั้งเวลาอย่างแม่นยำของผู้ทำงานเป็นระยะผ่าน setNextScheduleTimeOverride กระบวนการนี้ทำให้สามารถคำนวณตารางการทำงาน Periodic ถัดไปแบบไดนามิกได้ ซึ่งสามารถใช้เพื่อใช้งานฟีเจอร์ขั้นสูง เช่น เวลารีเฟรชแบบปรับอัตโนมัติ พฤติกรรมการลองใหม่ที่กำหนดเอง หรือการทำให้ผู้ปฏิบัติงานฟีดข่าวทำงานก่อนที่ผู้ใช้จะตื่นนอนทุกเช้าโดยไม่มีการเลื่อน ควรใช้ ExistingPeriodicWorkPolicy.UPDATE กับเทคนิคเหล่านี้เพื่อป้องกันการยกเลิกผู้ปฏิบัติงานที่ทำงานอยู่ในปัจจุบันในขณะที่กำหนดเวลาให้ผู้ปฏิบัติงานคนต่อไป
  • การทดสอบของ WorkManager กับการผลิตการจับคู่ชุดข้อความ คุณใช้ ExecutorsMode.PRESERVE_EXECUTORS ใน initializeTestWorkManager ได้เพื่อเก็บรักษาผู้ดำเนินการที่ตั้งค่าใน Configuration และเพื่อใช้เทรดหลักจริง
  • Coroutines API เช่น CoroutineWorker ได้ย้ายจากอาร์ติแฟกต์ Work-runtime-ktx เพิ่มเติมไปยังรันไทม์หลักของอาร์ติแฟกต์แล้ว business-runtime-ktx ว่างเปล่าแล้ว

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

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

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

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

เวอร์ชัน 2.9.0-alpha01

7 มิถุนายน 2023

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

ฟีเจอร์ใหม่

  • การสังเกตการณ์ผ่าน Flow - วินาที แทนที่จะใช้ LiveData ตอนนี้คุณสามารถดูความคืบหน้าของผู้ปฏิบัติงานผ่านโฟลว์ได้ผ่านทาง WorkManager.getWorkInfosFlow และใช้วิธีการที่คล้ายกัน
  • การตั้งเวลาอย่างแม่นยำของผู้ทำงานเป็นระยะผ่าน setNextScheduleTimeOverride กระบวนการนี้ทำให้สามารถคำนวณตารางการทำงาน Periodic ถัดไปแบบไดนามิกได้ ซึ่งสามารถใช้เพื่อใช้งานฟีเจอร์ขั้นสูง เช่น เวลารีเฟรชแบบปรับอัตโนมัติ พฤติกรรมการลองใหม่ที่กำหนดเอง หรือการทำให้ผู้ปฏิบัติงานฟีดข่าวทำงานก่อนที่ผู้ใช้จะตื่นนอนทุกเช้าโดยไม่มีการเลื่อน ควรใช้ ExistingPeriodicWorkPolicy.UPDATE กับเทคนิคเหล่านี้เพื่อป้องกันการยกเลิกผู้ปฏิบัติงานที่ทำงานอยู่ในปัจจุบันในขณะที่กำหนดเวลาให้ผู้ปฏิบัติงานคนต่อไป
  • การทดสอบของ WorkManager กับเวอร์ชันที่ใช้งานจริงที่ตรงกับการแยกชุดข้อความ ExecutorsMode.PRESERVE_EXECUTORS ใช้เพื่อเก็บรักษาผู้ดำเนินการที่ตั้งค่าใน Configuration และเพื่อใช้เทรดหลักจริงได้
  • Coroutines API เช่น CoroutineWorker ถูกย้ายจากอาร์ติแฟกต์เพิ่มเติม work-runtime-ktx ไปยังอาร์ติแฟกต์หลัก work-runtime แล้ว work-runtime-ktx ว่างเปล่าแล้ว

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

  • เครื่องมือสร้างของ WorkInfo เป็นแบบสาธารณะในขณะนี้ จึงอาจเป็นประโยชน์ในการทดสอบ (Ia00b6, b/209145335)
  • work-runtime-ktx ว่างเปล่าแล้ว ขณะนี้ CoroutineWorker และยูทิลิตีเฉพาะ Kotlin อื่นๆ พร้อมใช้งานแล้วในอาร์ติแฟกต์ work-runtime หลัก (I71a9a)
  • เพิ่มเมธอด setNextScheduleTimeOverride ซึ่งช่วยให้กำหนดตารางเวลางานตามช่วงเวลาได้อย่างแม่นยำ (I3b4da)
  • เปลี่ยนชื่อ getEarliestRunTimeMillis เป็น getNextScheduleTimeMillis แล้ว (I2bd7a)
  • ระบบจะเพิ่มข้อมูลเวลาทำงานตามกำหนดการถัดไปไปยัง WorkInfo (I797e4)
  • ระบบจะเพิ่มข้อมูลความล่าช้าเริ่มต้นและระยะเวลาลงใน WorkInfo (I52f2f)
  • เมธอดที่เพิ่มจะสังเกตผู้ปฏิบัติงานผ่านโฟลว์ผ่านเมธอด 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 ด้วยวิธีที่ไม่รบกวนผู้ใช้ โดยรักษาเวลาในคิวเดิม การทำเชน ฯลฯ ไว้ ดูรายละเอียดเพิ่มเติมได้ในบล็อกโพสต์โดยละเอียดเกี่ยวกับฟีเจอร์นี้ รวมทั้งเอกสาร Java สำหรับ WorkManager.updateWork และ ExistingPeriodicWorkPolicy.UPDATE

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

  • เพิ่ม WorkManager.updateWork เพื่ออัปเดตงานที่คงเวลาและห่วงโซ่ในคิวเดิมไว้ (I9a248, b/219446409)
  • เพิ่ม ExistingPeriodicWorkPolicy.UPDATE แล้ว นโยบายนี้อนุญาตให้อัปเดตงานเป็นระยะตามชื่อ ซึ่งจะคล้ายกับ REPLACE ที่มีอยู่ แต่จะรบกวนน้อยกว่า โดยจะไม่ยกเลิกผู้ปฏิบัติงานหากกำลังทำงานอยู่และจะรักษาเวลาของคิวไว้ได้ การหน่วงเวลาและระยะเวลาเริ่มต้นจะคำนวณจากเวลาในคิวเดิมแทนที่จะเป็นเวลาอัปเดต REPLACE เลิกใช้งานแล้วเพื่อลดความสับสนระหว่าง REPLACE กับ UPDATE ที่ชื่อคล้ายกันมาก หากยังต้องการเก็บความหมายเดิมของ REPLACE ไว้ คุณสามารถใช้ CANCEL_AND_REENQUEUE ที่เพิ่มเข้ามาใหม่ซึ่งเหมือนกับ REPLACE ได้ (I985ed, b/219446409)
  • เพิ่มความสามารถในการสกัดกั้นข้อยกเว้นการกำหนดเวลาที่ระบุ Consumer<Throwable> ผ่าน setSchedulingExceptionHandler)
  • เพิ่มความสามารถในการระบุ Consumer<Throwable> ผ่าน setInitializationExceptionHandler เพื่อระบุว่าเกิดปัญหาขณะพยายามเริ่มต้น WorkManager หรือไม่
  • ตัวช่วยแบบอินไลน์สำหรับ OneTimeWorkRequest & ย้าย PeriodicWorkRequest จาก androidx.work:work-runtime-ktx ไปยัง androidx.work:work-runtime (I0010f, b/209145335) แล้ว
  • เพิ่มเมธอดของ Help WorkQuery.fromIds, WorkQuery.fromStates, WorkQuery.fromUniqueWorkNames, WorkQuery.fromTags เพื่อสร้าง WorkQuery โดยตรงแล้ว (b/199919736) (If48f2, b/199919736)
  • เพิ่ม getForegroundInfo ไปที่ Worker แล้ว (Ic1ead)
  • RxWorker ทั้งสำหรับ RxJava 2 และ RxJava 3 มี setForeground ที่ส่งกลับ Completable ซึ่งสามารถใช้แทน setForegroundInfoAsync ที่ส่งกลับ ListenableFuture
  • RxWorker ทั้งสำหรับ RxJava 2 และ RxJava 3 มี getForegroundInfo ที่ส่งกลับ Single ซึ่งสามารถใช้แทน getForegroundInfoAsync ที่ส่งกลับ ListenableFuture (b/203851459)
  • สร้างข้อจํากัดได้โดยตรงแทนที่จะใช้ Constraints.Builder ซึ่งสะดวกสําหรับผู้ใช้ Kotlin (Idc390, b/137568653)
  • เพิ่มความสามารถในการตรวจสอบว่า WorkManager เริ่มต้นแล้วหรือไม่ นอกจากนี้ ได้เพิ่ม getConfiguration() API ใหม่สำหรับนักพัฒนาไลบรารีเพื่อรับการกำหนดค่าที่ใช้เริ่มต้น WorkManager (I6eff3, b/212300336)

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

  • แก้ไขปัญหาเกี่ยวกับเครื่องจัดตารางเวลาแบบสุดๆ ที่ขัดขวางไม่ให้ผู้ปฏิบัติงานทำงานทันทีเมื่อมีภาระงานหนักเกินไป (I9686b, b/248111307)
  • เพิ่ม @RequiresPermission ไปยัง API ที่ต้องให้สิทธิ์ POST_NOTIFICATIONS ใน SDK 33 ขึ้นไป (Ie542e, b/238790278)
  • เผยแพร่การยกเลิกใน CoroutineScope ไปยัง ListenableFuture เมื่อใช้ suspendCancellableCoroutine

เวอร์ชัน 2.8.0-rc01

7 ธันวาคม 2022

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

ฟีเจอร์ใหม่

  • ไม่มีฟีเจอร์ใหม่ในรุ่นนี้ หลักๆ แล้วจะเป็นการเพิ่มประสิทธิภาพเวอร์ชัน

เวอร์ชัน 2.8.0-beta02

9 พฤศจิกายน 2022

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

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

  • แก้ไขเมธอด equals ใน WorkInfo ซึ่งก่อนหน้านี้ไม่ได้นำข้อมูลการสร้างใหม่มาพิจารณา (4977cc)

เวอร์ชัน 2.8.0-beta01

5 ตุลาคม 2022

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

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

  • แก้ไขปัญหาเกี่ยวกับเครื่องจัดตารางเวลาแบบสุดๆ ที่ขัดขวางไม่ให้ผู้ปฏิบัติงานทำงานทันทีเมื่อมีภาระงานหนักเกินไป (I9686b, b/248111307)

เวอร์ชัน 2.8.0-alpha04

7 กันยายน 2022

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

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

  • เพิ่ม WorkerInfo.getGeneration() และ WorkerParameters.getGeneration() ที่แสดงผลลัพธ์การสร้างผู้ปฏิบัติงาน ผู้ปฏิบัติงานมีหลายรุ่น หากมีการอัปเดตผ่าน WorkManager.updateWork หรือ WorkManager.enqueueUniquePeriodicWork โดยใช้ ExistingPeriodicWorkPolicy.UPDATE โปรดทราบว่า หากผู้ปฏิบัติงานกำลังทำงาน วิธีการนี้จะแสดงผลรุ่นใหม่กว่าจากผู้ปฏิบัติงานที่กำลังทำงานในปัจจุบันได้หากมีการอัปเดตในระหว่างการเรียกใช้ผู้ปฏิบัติงาน (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

  • เมธอดของ Helper WorkQuery.fromStates, WorkQuery.fromUniqueWorkNames เพิ่ม WorkQuery.fromTags เพื่อสร้าง WorkQuery โดยตรงแล้ว (If48f2, b/199919736)
  • เพิ่มเมธอด BuildCompat รุ่นทดลองสำหรับ SDK ในอนาคต (Iafd82, b/207528937)
  • เพิ่ม getForegroundInfo ไปยัง Worker (Ic1ead)
  • ตัวช่วยเมธอด WorkQuery.fromIds เพื่อสร้าง WorkQuery โดยตรงจากรหัส เพิ่ม แล้ว (Ie5bdf, b/199919736)
  • ตอนนี้ RxWorker มี setForeground ที่ส่งคืน Completable ซึ่ง สามารถใช้แทน setForegroundInfoAsync ที่ส่งกลับ ListenableFuture (I85156)
  • ตอนนี้ RxWorker สำหรับ RxJava 2 มี getForegroundInfo ที่ส่งคืน Single ซึ่ง สามารถใช้แทน getForegroundInfoAsync ที่ส่งกลับ ListenableFuture (I21c91, b/203851459)
  • ตอนนี้ RxWorker สำหรับ RxJava 3 มี getForegroundInfo ที่ส่งคืน Single ซึ่ง สามารถใช้แทน getForegroundInfoAsync ที่ส่งกลับ ListenableFuture (I1ca8a)
  • ตอนนี้ RxWorker มี setForeground ที่ส่งคืน Completable ซึ่ง สามารถใช้แทน setForegroundInfoAsync ที่ส่งกลับ ListenableFuture (I992a3, b/203851459)

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

  • เผยแพร่การยกเลิกใน CoroutineScope ไปยัง ListenableFuture เมื่อใช้ suspendCancellableCoroutine (I77e63)

เวอร์ชัน 2.7

เวอร์ชัน 2.7.1

17 พฤศจิกายน 2021

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

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

  • การยกเลิกใน CoroutineScope จะมีผลในวันที่ ListenableFuture เมื่อใช้ suspendCancellableCoroutine (I77e63)
  • ระบบจะยกเว้นทันทีเมื่อมีการทำเครื่องหมายคำของานที่ล่าช้าเป็น "เร่งด่วน" bef1762

เวอร์ชัน 2.7.0

13 ตุลาคม 2021

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

การเปลี่ยนแปลงที่สำคัญตั้งแต่ 2.6.0

  • WorkManager เปิดตัว WorkRequest.Builder.setExpedited(...) API ใหม่เพื่อช่วยเรื่องข้อจำกัดของบริการที่ทำงานอยู่เบื้องหน้าใน Android 12

  • เมื่อใช้ setExpedited(...) WorkManager จะมอบสิทธิ์สำหรับงานด่วนใน JobScheduler ให้เริ่มใช้ Android 12 พร้อมทั้งมอบความเข้ากันได้แบบย้อนหลังใน Android เวอร์ชันก่อนหน้าด้วยการมอบสิทธิ์ให้กับบริการที่ทำงานอยู่เบื้องหน้า

เวอร์ชัน 2.7.0-rc01

29 กันยายน 2021

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

เวอร์ชันนี้เหมือนกับ androidx.work:work-*:2.7.0-beta01

เวอร์ชัน 2.7.0-beta01

1 กันยายน 2021

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

ฟีเจอร์ใหม่

  • ลดการช่วงชิง SQLite แบบหลายกระบวนการเมื่อเริ่มต้น WorkManager

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

  • นํา API ของ @ExperimentalExpeditedWork ออกเนื่องจาก API ของแพลตฟอร์มที่เกี่ยวข้องสําหรับ Android 12 (S) มีความเสถียร (aosp/1792806)

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

  • ระบุข้อความแสดงข้อผิดพลาดที่ดียิ่งขึ้นสำหรับผู้ปฏิบัติงานที่เร่งรัดที่ไม่ได้ใช้ getForegroundInfoAsync() (aosp/1809376)

เวอร์ชัน 2.7.0-alpha05

21 กรกฎาคม 2021

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

รุ่นนี้มีการแก้ไขข้อบกพร่องจากรุ่น WorkManager 2.6.0-beta02 ด้วย

เวอร์ชัน 2.7.0-alpha04

2 มิถุนายน 2021

ปล่อย androidx.work:work-*:2.7.0-alpha04 แล้ว

รุ่นนี้มีการเปลี่ยนแปลงจากรุ่น 2.6.0-beta01 ด้วยเช่นกัน

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

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

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

เวอร์ชัน 2.7.0-alpha03

21 เมษายน 2021

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

ฟีเจอร์ใหม่

  • จาก WorkManager 2.6.0-alpha02: เพิ่มการสนับสนุนสำหรับผู้ปฏิบัติงานที่เรียกใช้ได้ในทุกกระบวนการ (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 อื่นๆ สามารถใช้เป็นทรัพยากร 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 เป็น Expedited ได้ เพื่อให้รองรับการทำงานที่ใช้เวลานานซึ่งก่อนหน้านี้เคยเชื่อมโยงกับวงจรของบริการที่ทำงานอยู่เบื้องหน้าได้ดียิ่งขึ้น

    API นี้มาแทนที่ API setForegroundAsync(...) / setForeground(...) ซึ่งตอนนี้เลิกใช้งานแล้ว

    เมื่อใช้ setExpedited(...) WorkManager จะมอบสิทธิ์สำหรับงานด่วนใน JobScheduler ที่เริ่มใช้งาน Android 12 พร้อมกับมอบความเข้ากันได้แบบย้อนหลังใน Android เวอร์ชันก่อนหน้าโดยการมอบสิทธิ์ให้กับบริการที่ทำงานอยู่เบื้องหน้า

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

  • เพิ่มการสนับสนุนสำหรับWorkRequestแบบเร่งด่วน

เวอร์ชัน 2.6.0

เวอร์ชัน 2.6.0

1 กันยายน 2021

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

การเปลี่ยนแปลงที่สำคัญตั้งแต่ 2.5.0

  • ตอนนี้ WorkManager ใช้ androidx.startup เพื่อเริ่มต้น WorkManager หากใช้ tools:node="remove" ContentProvider ที่ใช้ในการเริ่มต้น WorkManager ก่อนหน้านี้ คุณจะต้องดำเนินการต่อไปนี้แทน

    <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.work.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    
    <!-- If you want to disable android.startup completely. -->
     <provider
                android:name="androidx.startup.InitializationProvider"
                android:authorities="${applicationId}.androidx-startup"
                tools:node="remove" />
    
  • เพิ่มการสนับสนุนสำหรับผู้ปฏิบัติงานที่สามารถทำงานในกระบวนการใดก็ได้ (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 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มการสนับสนุนสำหรับผู้ปฏิบัติงานที่สามารถทำงานในกระบวนการใดก็ได้ (Iaf200)

  • เพิ่ม RemoteCoroutineWorker ซึ่งเป็นการใช้งาน RemoteListenableWorker ที่สามารถเชื่อมโยงกับกระบวนการระยะไกลได้ (I30578)

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

  • เพิ่มการรองรับข้อจำกัดเครือข่าย TEMPORARILY_UNMETERED แล้ว (I08d5e)
  • การสนับสนุนผู้ปฏิบัติงานแบบหลายกระบวนการสำหรับ setProgressAsync() (Ib6d08)
  • กำหนดให้ WorkManagerInitializer เป็นแบบสาธารณะเพื่อให้ androidx.startup.Initializer รายการอื่นๆ ใช้เป็นทรัพยากร Dependency ได้ (I5ab11)

เวอร์ชัน 2.6.0-alpha01

24 มีนาคม 2021

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

ฟีเจอร์ใหม่

  • ขณะนี้ WorkManager ใช้ androidx.startup เพื่อเริ่มต้น WorkManager ก่อนหน้านี้ androidx.work.impl.WorkManagerInitializer เป็นผู้ดำเนินการ (aosp/1608813)

    หากคุณใช้ tools:node="remove" ระบบจะใช้ ContentProvider ในการเริ่มต้น ของกระบวนการในอดีต คุณจะต้องดำเนินการต่อไปนี้แทน

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.work.impl.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (หรือ)

     <!-- If you want to disable android.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

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

  • เพิ่ม Result.getOutputData() API ซึ่งแสดงผล outputData ของ ListenableWorker (Ie51e3)

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

  • เพิ่มวิธีแก้ปัญหาสำหรับข้อบกพร่องของ OEM ซึ่งทำให้ระบบส่ง SecurityException เมื่อใช้ API ของ AlarmManager (aosp/1587518)

เวอร์ชัน 2.5.0

เวอร์ชัน 2.5.0

27 มกราคม 2021

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

การเปลี่ยนแปลงที่สำคัญตั้งแต่ 2.4.0

  • อาร์ติแฟกต์ :work:work-multiprocess ใหม่สำหรับแอปที่ใช้หลายกระบวนการ วิธีนี้จะช่วยเพิ่มประสิทธิภาพโดยการรวมการตั้งเวลาคำของานไว้ในกระบวนการเดียว
    • หากต้องการใช้ work-multiprocess ให้กำหนดทรัพยากร Dependency สำหรับสิ่งต่อไปนี้ วันที่ 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 ที่กำลังทำงาน
    • WorkRequests ที่กำหนดเวลาไว้ (aosp/1235501)
  • เพิ่ม ExistingWorkPolicy.APPEND_OR_REPLACE ซึ่งคล้ายกับ APPEND แต่แทนที่เชนที่มีข้อกำหนดเบื้องต้นซึ่งยกเลิกหรือไม่ผ่าน (b/134613984, aosp/1199640)

  • มอบความสามารถในการเพิ่ม RunnableScheduler ที่กำหนดเองเพื่อติดตาม WorkRequest ที่ต้องมีการดำเนินการในอนาคต ซึ่งจะใช้โดยเครื่องจัดตารางเวลาในการประมวลผล (aosp/1203944)

  • เพิ่มการรองรับการเพิ่มโรงงานแบบไดนามิกให้ผู้รับมอบสิทธิ์เมื่อใช้ DelegatingWorkerFactory (b/156289105, aosp/1309745)

  • ปรับการติดตามข้อจำกัด BATTERY_NOT_LOW ให้ใกล้เคียงกับแพลตฟอร์มมากขึ้น (aosp/1312583)

  • ตอนนี้เครื่องจัดตารางเวลาในกระบวนการใช้ API ที่ดีกว่าในการระบุชื่อของกระบวนการ วิธีนี้มีประโยชน์ในการรองรับแอปที่ใช้กระบวนการหลายรายการได้ดียิ่งขึ้น (aosp/1324732)

  • กฎ Lint ใหม่ที่บังคับใช้

    • การใช้ foregroundServiceType ที่ถูกต้องเมื่อใช้ API setForegroundAsync() (b/147873061, aosp/1215915)
    • การระบุรหัส JobScheduler ที่ WorkManager ควรใช้เมื่อใช้ JobService API โดยตรง aosp/1223567
    • เพิ่มกฎ 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)

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

  • แก้ไขกฎ Lint ที่ตรวจหาระยะเวลาของช่วงที่ไม่ถูกต้องเป็นเวลา PeriodicWorkRequest วินาที (aosp/1254846, b/152606442)

เวอร์ชัน 2.4.0-alpha01

4 มีนาคม 2020

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

ฟีเจอร์ใหม่

  • เครื่องจัดตารางเวลาในการประมวลผลของ WorkManager มีความสามารถมากขึ้นแล้ว ก่อนหน้านี้ เครื่องจัดตารางเวลาในกระบวนการจะพิจารณาเฉพาะการทํางานที่ไม่ล่าช้าและเป็นไปตามข้อจํากัดเท่านั้น ตอนนี้เครื่องจัดตารางเวลาในการประมวลผลจะติดตาม WorkRequest ซึ่งอาจดำเนินการในอนาคต รวมถึง PeriodicWorkRequest นอกจากนี้ ตัวจัดตารางเวลาในกระบวนการยังไม่ปฏิบัติตามขีดจำกัดในการตั้งเวลา (แต่ยังคงจำกัดอยู่ที่ขนาดของ Executor ที่ WorkManager ใช้อยู่) ซึ่งหมายความว่าตอนนี้แอปพลิเคชันจะเรียกใช้ WorkRequest ได้มากขึ้นเมื่อแอปอยู่เบื้องหน้า (aosp/1185778)

  • เพิ่มความสามารถในการขอข้อมูลการวินิจฉัยจาก WorkManager โดยใช้ adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>" แล้ว ซึ่งจะให้ข้อมูลที่เป็นประโยชน์จำนวนมาก เช่น

    • WorkRequest ที่เสร็จสมบูรณ์แล้วภายใน 24 ชั่วโมงที่ผ่านมา
    • WorkRequest ที่กำลังทำงาน
    • WorkRequests ที่กำหนดเวลาไว้ (aosp/1235501)
  • กฎ Lint ใหม่ที่บังคับใช้

    • การใช้ foregroundServiceType ที่ถูกต้องเมื่อใช้ API setForegroundAsync() (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)
  • แก้ไขอาการแข่งใน ConstraintController (aosp/1220100)
  • ปรับปรุงวงจรการจัดการบริการที่ทำงานอยู่เบื้องหน้าสำหรับผู้ปฏิบัติงานที่ใช้เวลานาน (aosp/1226295)
  • ปรับปรุงการจัดการการยกเลิกการแจ้งเตือนสำหรับผู้ปฏิบัติงานที่ใช้เวลานานเมื่อมีการยกเลิก (aosp/1228346)

เวอร์ชัน 2.3.1

เวอร์ชัน 2.3.1

5 กุมภาพันธ์ 2020

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

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

  • จัดการวงจรการใช้งานของ Notification ได้ดียิ่งขึ้นสำหรับ Worker ที่ทํางานเป็นเวลานานซึ่งทํางานเมื่อเบื้องหน้า Service ทํางานอยู่ (aosp/1218539, b/147249312)
  • ตอนนี้ WorkManager ขึ้นอยู่กับ androidx.sqlite:sqlite-framework:2.1.0 ที่เสถียร (aosp/1217729)
  • เพิ่มกฎ 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)

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

  • แก้ไขข้อบกพร่องในการใช้งาน LoadManager ที่การล้างการปลุกไม่ถูกต้อง (aosp/1156444)
  • แก้ไขข้อบกพร่องที่รายการ WorkRequest ที่ว่างเปล่าจะทำให้สร้างเชน WorkContinuation ที่ไม่ถูกต้อง (b/142835274, aosp/1157051)

การเปลี่ยนแปลงการขึ้นต่อกัน

  • WorkManager ใช้ห้อง 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

  • เปลี่ยนชื่อ API ของ containsKey ใน 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 คุณจึงไม่ยืนยันเวอร์ชันดังกล่าวหรือใช้สำหรับ 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 ให้เพิ่มทรัพยากร Dependency นี้ลงในไฟล์ Gradle เพื่อรับการสนับสนุน GCMNetworkManager โดยอัตโนมัติ หากบริการ Google Play ไม่พร้อมใช้งาน WorkManager จะเปลี่ยนกลับไปเป็น Alarm Manager ในอุปกรณ์รุ่นเก่าต่อไป

เวอร์ชัน 2.2.0-rc01

30 กรกฎาคม 2019

ปล่อย androidx.work:work-*:2.2.0-rc01 แล้ว คุณสามารถดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

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

  • แก้ไขข้อบกพร่องในการใช้งาน Alarm Manager ที่ทำให้บริการปิดตัวลงก่อนเวลาอันควร และส่งผลให้เกิด RejectedExecutionException ในบางกรณีซึ่งเกิดขึ้นไม่บ่อยนัก (aosp/1092374) (b/138238197)
  • เพิ่มวิธีแก้ปัญหาสำหรับ NullPointerException เมื่อใช้ API ของ JobScheduler ในอุปกรณ์บางเครื่อง (aosp/1091020) (b/138364061), (b/138441699)

เวอร์ชัน 2.2.0-beta02

19 กรกฎาคม 2019

ปล่อย androidx.work:work-*:2.2.0-beta02 แล้ว คุณสามารถดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

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

  • นำการพึ่งพา Jacoco โดยไม่ตั้งใจซึ่งเปิดตัวไปใน 2.2.0-beta01 ออกแล้ว

เวอร์ชัน 2.2.0-beta01

17 กรกฎาคม 2019

ปล่อย androidx.work:work-*:2.2.0-beta01 แล้ว คุณสามารถดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

ฟีเจอร์ใหม่

  • androidx.work:work-gcm:2.2.0-beta01 เป็นอาร์ติแฟกต์ Maven ใหม่ที่รองรับการใช้ GCMNetworkManager เป็นเครื่องจัดตารางเวลาเมื่อบริการ Google Play พร้อมใช้งานสำหรับ API ระดับ <= 22 ทรัพยากร Dependency แบบไม่บังคับนี้ช่วยให้การประมวลผลในเบื้องหลังมีความเสถียรและมีประสิทธิภาพมากขึ้นใน API เวอร์ชันเก่า หากแอปของคุณใช้บริการ Google Play ให้เพิ่มทรัพยากร Dependency นี้ลงในไฟล์ Gradle เพื่อรับการสนับสนุน GCMNetworkManager โดยอัตโนมัติ หากบริการ Google Play ไม่พร้อมใช้งาน WorkManager จะเปลี่ยนกลับไปเป็น Alarm Manager ในอุปกรณ์รุ่นเก่าต่อไป

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

  • แก้ปัญหาสำหรับ IllegalArgumentException ขณะติดตามสถานะเครือข่ายบนแท็บเล็ต Nvidia Shield K1 (aosp/1010188)

เวอร์ชัน 2.1.0

เวอร์ชัน 2.1.0

11 กรกฎาคม 2019

ปล่อย androidx.work:work-*:2.1.0 แล้ว รุ่นนี้เหมือนกับ androidx.work:work-*:2.1.0-rc01

การเปลี่ยนแปลงที่สำคัญตั้งแต่ 2.0.1

  • ตอนนี้ work-runtime-ktx ต้องใช้ Java 8 หากพบปัญหา คุณเพิ่มสิ่งต่อไปนี้ลงใน build.gradle ได้ วันที่ kotlinOptions { jvmTarget = "1.8" }
  • เพิ่มการเริ่มต้นแบบออนดีมานด์สำหรับ WorkManager ซึ่งจะสร้าง WorkManager เมื่อมีการอ้างอิงเท่านั้น b/127497100 หากต้องการตั้งค่าโปรเจ็กต์สำหรับการเริ่มต้นตามคำขอ ให้ทำดังนี้
    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 เป็นทรัพยากร Dependency และ มีส่วนขยาย 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 เป็น Dependency แต่ มีส่วนขยาย 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
  • แก้ไขข้อขัดข้องของ EDGE Case ที่มีข้อจำกัดการติดตามไม่ได้รับการล้างใน pre-JobScheduler API b/129226383
  • แก้ไข StackOverflowError ในการจัดการงานที่มีห่วงโซ่ยาว b/129091233
  • อัปเดตเอกสารประกอบสําหรับ PeriodicWorkRequest เพื่อระบุว่าเวลาแบบยืดหยุ่นเท่ากับ ไม่รองรับใน API 23
  • แก้ไขลิงก์เสียบางรายการในเอกสารประกอบของ Kotlin

เวอร์ชัน 2.0.0

เวอร์ชัน 2.0.0

20 มีนาคม 2019

เปิดตัว WorkManager 2.0.0 แล้ว เวอร์ชันนี้เหมือนกับ 2.0.0-rc01 และ AndroidX เวอร์ชัน 1.0.0 เวอร์ชันเสถียรที่มีทรัพยากร Dependency ของ AndroidX คำแนะนำจากเรา การกำหนดเป้าหมายเวอร์ชันนี้แทนเวอร์ชันเดิม 1.x ใช้งานอยู่ทั้งหมด จะกำหนดเป้าหมาย 2.x และ 1.x จะได้รับการแก้ไขข้อบกพร่องที่สำคัญเท่านั้น ภายในเวลาจำกัด

เวอร์ชัน 2.0.0-rc01

7 มีนาคม 2019

เปิดตัว WorkManager 2.0.0-rc01 เวอร์ชันนี้เหมือนกับเวอร์ชันเสถียร 1.0.0 แต่มีทรัพยากร Dependency ของ AndroidX เมื่อไฟล์นี้ถึงรุ่น 2.0.0 เวอร์ชันเสถียรแล้ว คุณควร รวมเวอร์ชันนี้และเวอร์ชัน 1.x เดิมจะได้รับเฉพาะ การแก้ไขข้อบกพร่อง การพัฒนาที่ใช้งานอยู่ทั้งหมดจะกำหนดเป้าหมายเป็น 2.x

การขึ้นต่อกันก่อน AndroidX

สำหรับข้อมูลเกี่ยวกับการใช้ส่วนขยาย Kotlin โปรดดู เอกสารประกอบของ KTX
เอกสารอ้างอิง: Java

ดึงดูด

dependencies {
    def work_version = "1.0.1"

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

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

    // optional - RxJava2 support
    implementation "android.arch.work:work-rxjava2:$work_version"
    // optional - Test helpers
    androidTestImplementation "android.arch.work:work-testing:$work_version"
}

Kotlin

dependencies {
    val work_version = "1.0.1"

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

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

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

    // optional - Test helpers
    androidTestImplementation("android.arch.work:work-testing:$work_version")
}

เวอร์ชัน 1.0.1

เวอร์ชัน 1.0.1

9 เมษายน 2019

เปิดตัว WorkManager 1.0.1 รุ่นนี้เหมือนกับ 1.0.1-rc01

โปรดทราบว่าเราขอแนะนำเป็นอย่างยิ่งให้ผู้ใช้อัปเดต WorkManager 2.x ดังนี้ จากนี้ไปจะมีการอัปเดตสำหรับ Branch 1.x เพียงเล็กน้อย API ใหม่จะ สำหรับไลบรารี 1.x ด้วย

เวอร์ชัน 1.0.1-rc01

2 เมษายน 2019

เปิดตัว WorkManager 1.0.1-rc01 เวอร์ชันนี้มีการแก้ไขข้อบกพร่อง

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

  • ตอนนี้การทดสอบ Robolectric ทำงานอย่างถูกต้องกับ WorkManager แล้ว b/122553577
  • แก้ไขข้อขัดข้องของ EDGE Case ที่มีข้อจำกัดการติดตามไม่ได้รับการล้างใน pre-JobScheduler API b/129226383
  • แก้ไข StackOverflowError ในการจัดการงานที่มีห่วงโซ่ยาว b/129091233

เวอร์ชัน 1.0.0

เวอร์ชัน 1.0.0

5 มีนาคม 2019

นี่คือเวอร์ชันเสถียร 1.0.0 ของ WorkManager WorkManager เวอร์ชันนี้คือ ซึ่งเหมือนกับ 1.0.0-rc02

เวอร์ชัน 1.0.0-rc02

21 กุมภาพันธ์ 2019

นี่คือรุ่นที่ 2 ที่เป็นตัวเลือกสำหรับ WorkManager เวอร์ชันเสถียร 1.0.0 รุ่นนี้มีการแก้ไขข้อบกพร่อง 2 รายการ

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

  • ตอนนี้กำหนดเวลา Worker ได้ถูกต้องหลังจากที่แอปพลิเคชันขัดข้อง b/124546316

  • Worker ที่แสดง Exception ที่ไม่ได้ทำเครื่องหมายตอนนี้จะได้รับการทำเครื่องหมายอย่างถูกต้องเป็น FAILEDและไม่ทำให้กระบวนการของแอปขัดข้องอีกต่อไป

เวอร์ชัน 1.0.0-rc01

14 กุมภาพันธ์ 2019

นี่คือตัวเลือกรุ่นสำหรับ WorkManager เวอร์ชันเสถียร 1.0.0 รุ่นนี้มีการแก้ไขข้อบกพร่อง 1 รายการ

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

  • การติดตั้งใช้งาน Alarm Manager ดำเนินการตามหน้าต่าง flex อย่างถูกต้องในขณะนี้ สำหรับ PeriodicWorkRequests b/124274584

เวอร์ชัน 1.0.0-beta05

6 กุมภาพันธ์ 2019

รุ่นนี้มีการแก้ไขข้อบกพร่อง

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

  • แก้ไขกรณีที่มีการใช้ JobScheduler.getPendingJob(...) ใน API 23 b/123893059
  • แก้ไข NullPointerException ในอุปกรณ์ที่ใช้ Android 5.1 (API ระดับ 22) หรือต่ำกว่า b/123835104

เวอร์ชัน 1.0.0-beta04

4 กุมภาพันธ์ 2019

รุ่นนี้มีการแก้ไขข้อบกพร่อง

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

  • ปรับปรุงการกำหนดเวลาของ PeriodicWork สำหรับการติดตั้งใช้งานตาม AlarmManager
  • แก้ไขกรณีที่ WorkManager ไม่สามารถติดตามข้อจำกัดได้อย่างถูกต้องเมื่อ โดยใช้การใช้งานแบบ Alarm Manager b/123379508
  • แก้ไขกรณีที่ WorkManager ไม่สามารถลองการทำงานซ้ำของกระบวนการเมื่อ โดยใช้การใช้งานแบบ Alarm Manager b/123329850
  • แก้ไขเคสที่ทำให้ WorkManager รั่วไหล Wake Lock เมื่อใช้ การใช้งานแบบ Alarm Manager

เวอร์ชัน 1.0.0-beta03

25 มกราคม 2019

รุ่นนี้มีการแก้ไขข้อบกพร่อง

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

  • เราได้เปิดตัว 1.0.0-beta02 การถดถอย ซึ่งทำให้ไม่ทำงาน อย่างเหมาะสมในบางสถานการณ์ b/123211993
  • แก้ไขกรณีที่การทำงานไม่มีกำหนดเวลาที่เหมาะสม b/122881597
  • แก้ไข ConcurrentModificationException ในอุปกรณ์ที่ใช้ Android 5.1 (API หรือต่ำกว่านั้น นี่เป็นการแก้ไขที่ต่อเนื่องมาจาก 1.0.0-beta02 b/121345393
  • เพิ่ม exported=false สำหรับคอมโพเนนต์บางรายการในไฟล์ Manifest ที่ขาดหายไป คำอธิบายประกอบนี้
  • รวมถึงข้อมูลเกี่ยวกับวิธีที่ WorkManager โต้ตอบกับระบบปฏิบัติการใน เอกสารประกอบระดับแพ็กเกจ

เวอร์ชัน 1.0.0-beta02

15 มกราคม 2019

รุ่นนี้มีการแก้ไขข้อบกพร่อง

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

  • แก้ไขกรณี Edge Case ที่การทำงานเป็นระยะอาจทำงานมากกว่า 1 ครั้งในแต่ละช่วง สำหรับอุปกรณ์ที่ใช้ Android 6.0 (API ระดับ 23) b/121998363
  • แก้ไข ConcurrentModificationException ในอุปกรณ์ที่ใช้ Android 5.1 (API ระดับ 22) หรือต่ำกว่า b/121345393
  • แก้ไขการทำงานที่ผิดพลาดเมื่อไม่เป็นไปตามข้อจำกัดในอุปกรณ์ ที่ใช้ Android 5.1 (API ระดับ 22) หรือต่ำกว่า b/122578012
  • เพิ่มประสิทธิภาพการจัดการการทำงานให้เสร็จเพื่อให้เร็วขึ้นในบางกรณี b/122358129
  • เพิ่มการเปลี่ยนแปลงเพื่อจัดการกับเงื่อนไขการแข่งขันที่อาจเกิดขึ้นจากหลายอินสแตนซ์ ของ LiveData ที่ WorkManager ใช้
  • ย้ายไปใช้ทรัพยากร Dependency 1.1.1 ของ Room แทน 1.1.1-rc01 แล้ว เหล่านี้ เหมือนกันทุกประการ b/122578011

เวอร์ชัน 1.0.0-beta01

19 ธันวาคม 2018

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

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

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

เวอร์ชัน 1.0.0-alpha13

12 ธันวาคม 2018

รุ่นนี้มีการเปลี่ยนแปลง API เล็กน้อยซึ่งจะเป็นประโยชน์สำหรับผู้ใช้ Kotlin บางราย

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

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

การละเมิดการเปลี่ยนแปลง API

  • ย้าย androidx.work.Result ไปเป็นชั้นเรียนภายในของ ListenableWorker แล้ว

เวอร์ชัน 1.0.0-alpha12

5 ธันวาคม 2018

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

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

  • สิ่งประดิษฐ์ใหม่ work-rxjava2 จะแนะนำ RxWorker นี่คือ ListenableWorker ที่คาดไว้ Single<Payload>
  • การรองรับ Firebase JobDispatcher ถูกนำออกเนื่องจากการเลิกใช้งานที่กำลังจะเกิดขึ้น ซึ่งหมายความว่าอาร์ติแฟกต์ work-firebase จะไม่อัปเดตอีกต่อไปเมื่อเราเข้าสู่รุ่นเบต้า เราจะเพิ่มทางเลือกอื่นในอนาคต
  • รวม Payload เป็น Result แล้ว ตอนนี้ Result เป็น "ชั้นเรียนที่ปิดผนึก" แล้ว ด้วยการติดตั้งใช้งานที่เป็นรูปธรรม 3 แบบ ซึ่งคุณจะได้รับผ่าน Result.success() (หรือ Result.success(Data)), Result.failure() (หรือ Result.failure(Data)) และ Result.retry() ตอนนี้ ListenableFuture ได้ผลลัพธ์เป็น Result จากเดิม Payload Worker ไม่มีเมธอด Getter และ setter สำหรับเอาต์พุต Data นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • เพิ่ม Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit) และ Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit) และตัวแปรเพื่อให้รองรับ URI เนื้อหาที่เรียกใช้ได้ช้าได้ดียิ่งขึ้น b/119919774
  • เพิ่มตัวแปร WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration) รายการแล้ว วิธีนี้ต้องใช้ API 26
  • เพิ่มเมธอดส่วนขยาย Kotlin Operation.await() และ ListenableFuture.await() รายการแล้ว
  • เปลี่ยนชื่อ Operation.getException() เป็น Operation.getThrowable() แล้ว นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • คลาส ContentUriTriggers และวิธีการที่อ้างอิงคลาสนี้ไม่สามารถใช้งานแบบสาธารณะได้อีกต่อไป นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • นำเมธอด varA ที่เหลือใน WorkManager, WorkContinuation และ OneTimeWorkRequest ออกเพื่อปรับปรุง API ให้ดียิ่งขึ้น หากต้องการแก้ปัญหาเกี่ยวกับเวอร์ชัน คุณสามารถรวมตัวแปรที่มีอยู่ด้วย Arrays.asList(...) เรายังคงรวมเวอร์ชันอาร์กิวเมนต์เดียวของแต่ละเมธอดไว้อยู่ นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • นำตัวแปรออกแล้ว WorkContinuation.combine(OneTimeWorkRequest, *) รายการ นักเรียนนำเสนอ API ที่สร้างความสับสน ทำให้เข้าใจเมธอด combine ที่มีอยู่ได้มากขึ้น นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ

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

  • ในตอนนี้การติดตั้งใช้งาน Pre-Marshmallow มีความน่าเชื่อถือมากขึ้นในการกู้คืนกระบวนการที่ดำเนินการไปแล้วจากการทำงานที่ดำเนินอยู่
  • LiveData ที่สังเกตผ่าน observeForever มีการติดตามผ่าน WorkManager นี่เป็นพอร์ตสำรองของการแก้ไขคลังห้องแชท b/74477406
  • ตอนนี้ Data.Builder.build() จะยกเว้นข้อยกเว้นหากวัตถุที่เรียงลำดับเกินขนาดสูงสุด โดยก่อนหน้านี้จะเกิดขึ้นเฉพาะในชุดข้อความพื้นหลังที่คุณไม่สามารถจัดการได้อย่างเหมาะสม
  • แยกระหว่างงานที่หยุดกับงานที่ยกเลิกแล้วเพิ่มเติม getWorkInfoById() จะส่งกลับ WorkInfo พร้อม State ของ CANCELLED ระหว่าง ListenableWorker.onStopped()
  • ถือว่า null Result เป็นความล้มเหลวใน ListenableWorker b/120362353
  • การแก้ไขแบบคาดเดาสำหรับแท็บเล็ต Shield ที่ใช้ API 24 ซึ่งมี IllegalArgumentException ในบางครั้ง b/119484416

การละเมิดการเปลี่ยนแปลง API

  • การรองรับ Firebase JobDispatcher ถูกนำออกเนื่องจากการเลิกใช้งานที่กำลังจะเกิดขึ้น ซึ่งหมายความว่าอาร์ติแฟกต์ work-firebase จะไม่อัปเดตอีกต่อไปเมื่อเราเข้าสู่รุ่นเบต้า เราจะเพิ่มทางเลือกอื่นในอนาคต
  • รวม Payload เป็น Result แล้ว ตอนนี้ Result เป็น "ชั้นเรียนที่ปิดผนึก" แล้ว ด้วยการติดตั้งใช้งานที่เป็นรูปธรรม 3 แบบ ซึ่งคุณจะได้รับผ่าน Result.success() (หรือ Result.success(Data)), Result.failure() (หรือ Result.failure(Data)) และ Result.retry() ตอนนี้ ListenableFuture ได้ผลลัพธ์เป็น Result จากเดิม Payload Worker ไม่มีเมธอด Getter และ setter สำหรับเอาต์พุต Data
  • เพิ่มเมธอดส่วนขยาย Kotlin Operation.await() และ ListenableFuture.await() รายการแล้ว
  • เปลี่ยนชื่อ Operation.getException() เป็น Operation.getThrowable() แล้ว
  • คลาส ContentUriTriggers และวิธีการที่อ้างอิงคลาสนี้ไม่สามารถใช้งานแบบสาธารณะได้อีกต่อไป
  • นำเมธอด varA ที่เหลือใน WorkManager, WorkContinuation และ OneTimeWorkRequest ออกเพื่อปรับปรุง API ให้ดียิ่งขึ้น หากต้องการแก้ปัญหาเกี่ยวกับเวอร์ชัน คุณสามารถรวมตัวแปรที่มีอยู่ด้วย Arrays.asList(...) เรายังคงรวมเวอร์ชันอาร์กิวเมนต์เดียวของแต่ละเมธอดไว้อยู่
  • นำตัวแปรออกแล้ว WorkContinuation.combine(OneTimeWorkRequest, *) รายการ นักเรียนนำเสนอ API ที่สร้างความสับสน ทำให้เข้าใจเมธอด combine ที่มีอยู่ได้มากขึ้น

เวอร์ชัน 1.0.0-alpha11

8 พฤศจิกายน 2018

รุ่นนี้มีการเปลี่ยนแปลงหลายอย่างที่จะเปลี่ยนเป็น API แบบเสถียรในวันที่ beta มีการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นในระบบในรุ่นนี้ โปรดดูส่วนการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นในระบบด้านล่าง

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

  • work-runtime-ktx ขอแนะนำ CoroutineWorker ใหม่
  • เปลี่ยนชื่อ WorkStatus เป็น WorkInfo แล้ว ตัวแปรของเมธอด getStatus ที่เกี่ยวข้องทั้งหมดเปลี่ยนชื่อเป็น ตัวแปร getWorkInfo ที่เกี่ยวข้อง นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • ListenableWorker.onStopped() ไม่ยอมรับอีกต่อไปมีอาร์กิวเมนต์บูลีนที่ระบุว่ามีการยกเลิก WorkRequest หรือไม่ WorkManager ไม่ได้สร้างความแตกต่างนี้อีกต่อไป นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • แพ็กเกจ androidx.work.test เปลี่ยนชื่อเป็นแพ็กเกจ androidx.work.testing แล้ว นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • ตัวตั้งค่าใน Constraints ไม่ได้เป็นส่วนหนึ่งของ API สาธารณะแล้ว นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • WorkerParameters.getTriggeredContentUris() และ WorkerParameters.getTriggeredContentAuthorities() แสดงผลอาร์เรย์ก่อนหน้านี้ ขณะนี้เมธอดเหล่านี้จะส่งคืนคอลเล็กชัน นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • ListenableWorker.onStartWork() เปลี่ยนชื่อเป็น ListenableWorker.startWork() แล้ว นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • เครื่องมือสร้างสำหรับ WorkStatus ไม่ได้เป็นส่วนหนึ่งของ API สาธารณะอีกต่อไป นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • Configuration.getMaxJobSchedulerID() และ Configuration.getMinJobSchedulerID() เปลี่ยนชื่อเป็น Configuration.getMinJobSchedulerId() แล้ว และ Configuration.getMaxJobSchedulerId() ตามลำดับ นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • เพิ่มคำอธิบายประกอบ @NonNull จำนวนมากลงใน API สาธารณะเพื่อปรับปรุงการยศาสตร์ของ API
  • เพิ่ม WorkManager.enqueueUniqueWork() API เพื่อกำหนดลำดับของ OneTimeWorkRequest ที่ไม่ซ้ำกันโดยไม่ต้องสร้าง WorkContinuation
  • ตอนนี้ตัวแปรทั้งหมดของเมธอด enqueue และ cancel ใน WorkManager จะแสดงประเภท Operation ใหม่ นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • ตัวแปรทั้งหมดของ enqueue จะไม่ยอมรับตัวแปรสำหรับ WorkRequest อีกต่อไป นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ โปรดใช้คอลเล็กชันแทน คุณใช้ Arrays.asList() เพื่อแก้ไขโค้ดที่มีอยู่ได้ เราดำเนินการเช่นนี้เพื่อลดแพลตฟอร์ม API และจำนวนเมธอด
  • การพยายามinitialize WorkManager มากกว่า 1 ครั้งต่อกระบวนการจะส่งผลให้เกิด IllegalStateException นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ

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

  • ตอนนี้ WorkRequest.Builder ในอาร์ติแฟกต์ work-runtime-ktx ใช้ ListenableWorker การแก้ไข b/117666259
  • ตรวจสอบว่าเวลาทำงานครั้งถัดไปของ PeriodicWork คือในอนาคต การแก้ไข b/118204399
  • นำ I/O ของดิสก์ที่อาจเกิดขึ้นเมื่อใช้ WorkManager เมื่อเริ่มต้นแอป การแก้ไข b/117796731
  • แก้ไขเงื่อนไขการแข่งขันใน WorkConstraintsTracker แก้ไข android-workmanager/issues/56

การละเมิดการเปลี่ยนแปลง API

  • เปลี่ยนชื่อ WorkStatus เป็น WorkInfo แล้ว ตัวแปรของเมธอด getStatus ที่เกี่ยวข้องทั้งหมดเปลี่ยนชื่อเป็น ตัวแปร getWorkInfo ที่เกี่ยวข้อง
  • ListenableWorker.onStopped() ไม่ยอมรับอีกต่อไปมีอาร์กิวเมนต์บูลีนที่ระบุว่ามีการยกเลิก WorkRequest หรือไม่ WorkManager ไม่ได้สร้างความแตกต่างนี้อีกต่อไป
  • แพ็กเกจ androidx.work.test เปลี่ยนชื่อเป็นแพ็กเกจ androidx.work.testing แล้ว
  • ตัวตั้งค่าใน Constraints ไม่ได้เป็นส่วนหนึ่งของ API สาธารณะแล้ว
  • WorkerParameters.getTriggeredContentUris() และ WorkerParameters.getTriggeredContentAuthorities() แสดงผลอาร์เรย์ก่อนหน้านี้ ขณะนี้เมธอดเหล่านี้จะส่งคืนคอลเล็กชัน
  • ListenableWorker.onStartWork() เปลี่ยนชื่อเป็น ListenableWorker.startWork() แล้ว
  • เครื่องมือสร้างสำหรับ WorkStatus ไม่ได้เป็นส่วนหนึ่งของ API สาธารณะอีกต่อไป
  • Configuration.getMaxJobSchedulerID() และ Configuration.getMinJobSchedulerID() เปลี่ยนชื่อเป็น Configuration.getMinJobSchedulerId() แล้ว และ Configuration.getMaxJobSchedulerId() ตามลำดับ
  • ตอนนี้ตัวแปรทั้งหมดของเมธอด enqueue และ cancel ใน WorkManager จะแสดงประเภท Operation ใหม่
  • ตัวแปรทั้งหมดของ enqueue จะไม่ยอมรับตัวแปรสำหรับ WorkRequest อีกต่อไป
  • การพยายามinitialize WorkManager มากกว่า 1 ครั้งต่อกระบวนการจะส่งผลให้เกิด IllegalStateException

เวอร์ชัน 1.0.0-alpha10

11 ตุลาคม 2018

รุ่นนี้รองรับงานแบบไม่พร้อมกันที่นักพัฒนาแอปควบคุม มีการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นในระบบในรุ่นนี้ โปรดดูส่วนการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นในระบบด้านล่าง

เราคาดว่า WorkManager กำลังเข้าสู่ช่วงสุดท้ายของระยะเวลาอัลฟ่า เราคาดหวังว่า API จะมีความเสถียรในรุ่นเบต้า ดังนั้นโปรดสละเวลาส่งความคิดเห็นของคุณเกี่ยวกับเครื่องมือติดตามปัญหาของเรา

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

  • นำเมธอดและคลาส deprecated ก่อนหน้านี้ทั้งหมดออก โดยเฉพาะตัวสร้าง Worker ที่เป็นค่าเริ่มต้น การเปลี่ยนแปลงนี้ส่งผลกับ API ที่ส่งผลกับส่วนอื่นในระบบ
  • เปลี่ยนชื่อ NonBlockingWorker เป็น ListenableWorker แล้ว ซึ่งเป็นชั้นเรียนสาธารณะที่เลิกซ่อนและพร้อมใช้งาน
    • ListenableWorker ให้สิทธิ์เข้าถึงเมธอดนามธรรม 1 วิธี ซึ่งก็คือ ListenableFuture<Payload> onStartWork() ในชุดข้อความหลัก การเริ่มและประมวลผลงานแบบไม่พร้อมกันขึ้นอยู่กับคุณ เมื่อเสร็จแล้ว คุณควรอัปเดต ListenableFuture อย่างเหมาะสม ดูการติดตั้งใช้งาน ListenableFuture อ้างอิงได้ในแพ็กเกจ Futures ใน alpha02 (ดูด้านล่างส่วน WorkManager)
    • Worker ขยาย ListenableWorker และยังคงทำงานเหมือนก่อนหน้านี้ ด้วยเมธอด Result doWork() แบบนามธรรม
    • สับเปลี่ยนวิธีการและสมาชิกบางรายการจาก Worker เป็น ListenableWorker
    • ในเร็วๆ นี้เราจะติดตั้งใช้งานการอ้างอิงสำหรับ ListenableWorker ที่ใช้โครูทีน Kotlin (เมื่อมีการเผยแพร่เวอร์ชันเสถียร) และ RxJava2
  • อินเทอร์เฟซ WorkerFactory และการใช้งานที่เป็นรูปธรรม DefaultWorkerFactory ได้รวมกันเป็นคลาสนามธรรมชื่อ WorkerFactory แล้ว การติดตั้งใช้งานนี้ช่วยให้มั่นใจว่าระบบจะเรียกลักษณะการทำงานที่อิงตามการสะท้อนเริ่มต้นว่าเป็นความพยายามสุดท้ายสำหรับอินสแตนซ์ WorkerFactory ที่ผู้ใช้สร้างขึ้น นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • นำ WorkManager.synchronous() และ WorkContinuation.synchronous() และวิธีการที่เกี่ยวข้องทั้งหมดออก เพิ่ม ListenableFuture<Void> เป็นประเภทการแสดงผลของเมธอดมากมายใน API การเปลี่ยนแปลงนี้ส่งผลกับ API ที่ส่งผลกับส่วนอื่นในระบบ
    • ตอนนี้คุณรับและสังเกตการณ์พร้อมกันโดยใช้ ListenableFuture ได้แล้ว เช่น WorkManager.enqueue() ใช้เพื่อแสดงผล void ตอนนี้ก็จะแสดง ListenableFuture<Void> คุณสามารถเรียกใช้ ListenableFuture.addListener(Runnable, Executor) หรือ ListenableFuture.get() เพื่อเรียกใช้โค้ดเมื่อการดำเนินการเสร็จสมบูรณ์แล้ว
    • โปรดทราบว่าListenableFutureเหล่านี้ไม่ได้บอกคุณว่าการดำเนินการสำเร็จหรือล้มเหลว เมื่ออ่านจบแล้วเท่านั้น คุณยังคงต้องเชื่อมโยงเมธอด WorkManager เข้าด้วยกันเพื่อค้นหาข้อมูลนี้
    • เราไม่สนใจการเรียกใช้ cancel() สำหรับออบเจ็กต์เหล่านี้ เนื่องจากจะทำให้สับสนและอธิบายได้ยาก (คุณยกเลิกการดำเนินการหรือผลที่ได้) ซึ่งอยู่ภายในสัญญาของ Future
    • เพื่อคงความสอดคล้องกับเมธอด getStatus* แบบซิงโครนัส เราได้จัดเตรียมตัวแปร ListenableFuture รายการและเปลี่ยนชื่อตัวแปรที่มีอยู่ซึ่งแสดงผล LiveData ให้มี "LiveData" อย่างชัดเจน เป็นส่วนหนึ่งของชื่อ (เช่น getStatusesByIdLiveData(UUID)) การเปลี่ยนแปลงนี้ส่งผลกับ API ที่ส่งผลกับส่วนอื่นในระบบ

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

  • แก้ไขปัญหาที่รู้จักจาก alpha09 เกี่ยวกับไฟล์ androidx-annotations.pro ที่ซ้ำกัน คุณสามารถนำวิธีแก้ปัญหาชั่วคราวออกจากบันทึกประจำรุ่นก่อนหน้าได้โดยลบ exclude 'META-INF/proguard/androidx-annotations.pro' ออกจากไฟล์ Gradle
  • เพิ่มการกำหนดค่า Proguard เพื่อเก็บตัวสร้าง Worker ใหม่ไว้ b/116296569
  • แก้ไข NullPointerException ที่เป็นไปได้ในเงื่อนไขการแข่งขันที่ปริมาณงาน REPLACE วัน b/116253486 และ b/116677275
  • WorkContinuation.combine() ยอมรับ WorkContinuation อย่างน้อย 1 รายการ แทนที่จะเป็น 2 รายการขึ้นไป b/117266752

การละเมิดการเปลี่ยนแปลง API

  • นำเมธอดและคลาส deprecated ก่อนหน้านี้ทั้งหมดออก โดยเฉพาะตัวสร้าง Worker ที่เป็นค่าเริ่มต้น
  • อินเทอร์เฟซ WorkerFactory และการใช้งานที่เป็นรูปธรรม DefaultWorkerFactory ได้รวมกันเป็นคลาสนามธรรมชื่อ WorkerFactory แล้ว
  • นำ WorkManager.synchronous() และ WorkContinuation.synchronous() ออกแล้ว
  • ตอนนี้เมธอด WorkManager.getStatus*() แสดงผล ListenableFuture วินาที WorkManager.getStatus*LiveData() ส่งกลับ LiveData

เวอร์ชัน 1.0.0-alpha09

19 กันยายน 2018

ปัญหาที่ทราบ

หากพบปัญหา "พบไฟล์มากกว่า 1 ไฟล์ในเส้นทางที่ไม่ขึ้นกับระบบปฏิบัติการ 'META-INF/proguard/androidx-annotations.pro'" โปรดใส่ข้อมูลต่อไปนี้ในไฟล์ Gradle เป็นวิธีแก้ปัญหาชั่วคราวขณะที่เราแก้ไขปัญหาใน Alpha10

ดึงดูด

android {
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

Kotlin

android {
    packagingOptions {
        exclude("META-INF/proguard/androidx-annotations.pro")
    }
}

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

  • เพิ่มการแก้ไขอีกรายการที่จำเป็นสำหรับ "100 งาน" b/115560696
  • เพิ่มการแก้ไขบางส่วนสำหรับข้อผิดพลาดเกี่ยวกับข้อจำกัดคีย์นอกเนื่องจากเงื่อนไขการแข่งขัน b/114705286
  • มอบสิทธิ์การโทร ConstraintTrackingWorker.onStopped(boolean) ไปยัง Worker ที่เกี่ยวข้องแล้ว b/114125093
  • บังคับใช้การหน่วงเวลา Backoff ขั้นต่ำที่ถูกต้องสำหรับ Firebase JobDispatcher b/113304626
  • ชุดข้อความที่ได้รับการปรับปรุงเพื่อรับประกันการเข้าถึงภายในไลบรารี
  • แก้ไขปัญหาที่อาจเกิดขึ้นกับการกรองข้อมูล LiveData ที่ซ้ำกันออกภายใน

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

  • ตอนนี้คุณสร้างอินสแตนซ์ Worker ของคุณเองระหว่างรันไทม์ได้แล้ว โดยระบุ WorkerFactory เป็นส่วนหนึ่งของ WorkManager.Configuration ค่าเริ่มต้นจากโรงงานสำรองคือ DefaultWorkerFactory ซึ่งตรงกับลักษณะการทำงานของ WorkManager เวอร์ชันก่อนหน้า
    • ตอนนี้ตัวสร้างเริ่มต้นสำหรับ Worker และ NonBlockingWorker ถูกทำเครื่องหมายเป็นเลิกใช้งานแล้ว โปรดใช้ตัวสร้างใหม่ (Worker(Context, WorkerParameters)) และเรียก super(Context, WorkerParameters) WorkManager เวอร์ชันต่อๆ ไปจะนำตัวสร้างเริ่มต้นออก
  • เราเริ่มใช้อาร์ติแฟกต์ ListenableFuture ใหม่ภายในแล้ว (ไม่มีทรัพยากร Dependency ของ Guava) เราจะแนะนำ ListenableFutures สำหรับ API ในรุ่นต่อๆ ไป การเปลี่ยนแปลงนี้จะรองรับการเลิกซ่อน NonBlockingWorker ในท้ายที่สุด
  • เพิ่มความสามารถในการทริกเกอร์งานที่กําหนดเวลาไว้ใน TestDriver ผ่าน TestDriver.setInitialDelayMet(UUID) และ TestDriver.setPeriodDelayMet(UUID) b/113360060

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

  • ตัวสร้าง Worker และ NonBlockingWorker เริ่มต้นเลิกใช้งานแล้ว โปรดย้ายข้อมูลไปยังตัวสร้างใหม่โดยเร็วที่สุด เวอร์ชันในอนาคตจะนำตัวสร้างเริ่มต้นออก

เวอร์ชัน 1.0.0-alpha08

27 สิงหาคม 2018

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

  • คอมโพเนนต์ WorkManager ที่ติดป้ายกำกับอย่างชัดแจ้งว่าเป็นการเปิดเครื่องโดยตรงไม่ทราบ เพื่อไม่ให้เกิดการเริ่มทำงานระหว่างการเปิดเครื่องโดยตรง ในอนาคต เราจะให้บริการ WorkManager เวอร์ชันที่มีการตรวจพบการเปิดเครื่องโดยตรง b/112665532
  • แก้ไขปัญหาที่ลองทำซ้ำไม่ได้ b/112604021
  • แก้ไขการทำงานตามรอบโดยไม่ทำงานซ้ำๆ (ซึ่งเกี่ยวข้องกับปัญหาข้างต้น) b/112859683
  • ยอมรับนโยบาย Backoff เมื่อกระบวนการของแอปทำงานอยู่แล้ว
  • แก้ไขข้อความข้อยกเว้นใน 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 ไม่ทำงานตามกำหนดเวลาเมื่ออยู่ในโหมด Doze 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 2 ครั้งเมื่อใช้ 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
  • บันทึกข้อยกเว้นที่ตรวจไม่พบซึ่งเกิดขึ้นระหว่างการทำงานของผู้ปฏิบัติงาน 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 เมื่อใช้ทรัพยากร Dependency 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 สำหรับ 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