WorkManager

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

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

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

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

ดึงดูด

dependencies {
    def work_version = "2.12.0"

    // (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.12.0"

    // (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 ทำงานได้ดีขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดู ปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว

สร้างปัญหาใหม่

ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของ Issue Tracker

เวอร์ชัน 2.12

เวอร์ชัน 2.12.0

23 กันยายน 2026

androidx.work:work-*:2.12.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.12.0 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.11.0

  • minSdk ได้รับการอัปเดตจาก API 23 เป็น API 24
  • อาร์ติแฟกต์ใหม่ androidx.work:work-analytics เพิ่ม Work Metrics API เวอร์ชันทดลองสำหรับการตรวจสอบประวัติการดำเนินการของงาน WorkMetricsInfoRepository จะบันทึกWorkMetricsInfoต่อการประทับเวลาของเหตุการณ์งาน ระยะเวลาของผู้ปฏิบัติงาน เวลาทำงานสะสมทั้งหมด และรายละเอียดการพยายามเรียกใช้ คุณอ่านเมตริกได้ผ่านการค้นหาที่กำหนดค่าได้ หรือสังเกตได้ในฐานะFlowของงานที่เสร็จแล้ว API เหล่านี้กำหนดให้ต้องเลือกใช้ @ExperimentalWorkMetricsApi
  • API Listener เหตุการณ์ทดลองใหม่ช่วยให้คุณสังเกตการดำเนินการและการจัดกำหนดการของ WorkManager ได้โดยตรง Configuration.Builder ตอนนี้ยอมรับ Listener สำหรับเหตุการณ์การดำเนินการของ Worker (เริ่ม เสร็จสิ้น หยุด และข้อยกเว้นที่ไม่ได้จัดการ) และ Listener สำหรับเหตุการณ์การจัดกำหนดการ (เข้าคิว ยกเลิกการบล็อก อัปเดต การยกเลิก และข้อกำหนดเบื้องต้นที่ไม่สำเร็จ) ซึ่งเป็นองค์ประกอบพื้นฐานที่ใช้สร้าง work-analytics

เวอร์ชัน 2.12.0-rc01

12 สิงหาคม 2026

androidx.work:work-*:2.12.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.12.0-rc01 มีการเปลี่ยนแปลงเหล่านี้

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

  • แก้ไขการสะกดคำผิดในWorkConstraintsDaoTestชื่อคลาสและชื่อไฟล์ (I0868d)
  • ลดการแย่งกันใช้ล็อกใน PackageManagerService ระหว่างการเริ่มต้น WorkManager โดยการค้นหาและแคชสถานะการเปิดใช้เริ่มต้นของไฟล์ Manifest ของคอมโพเนนต์ใน PackageManagerHelper (Id84ba, b/528755807)
  • แก้ไขปัญหาที่การเรียกใช้ WorkManager.updateWork ขณะที่ Worker ทำงานอยู่ทำให้ Hook เหตุการณ์วงจรการดำเนินการและการติดตามข้อมูลการวัดและส่งข้อมูลเปลี่ยนไปเป็นการสร้างหลังการอัปเดตทันที (Ie80e8, b/511074795)

เวอร์ชัน 2.12.0-beta01

29 กรกฎาคม 2026

androidx.work:work-*:2.12.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.12.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

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

  • แก้ไขหน่วยความจำรั่วไหลเมื่อตรวจพบข้อยกเว้นของ Executor (I3404e, b/532588487)
  • ปรับปรุงการยกเลิกการเผยแพร่สำหรับ RemoteListenableWorker เพื่อให้การหยุดคนทำงานที่ระบบเริ่มต้นยกเลิกโครูทีนระยะไกลอย่างถูกต้องและกำหนดเวลาการทำงานใหม่ ในขณะที่คนทำงานระยะไกลที่ยกเลิกด้วยตนเองจะทำเครื่องหมายการทำงานเป็น "ล้มเหลว" อย่างถูกต้อง หมายเหตุ: ขณะนี้ลักษณะการทำงานนี้อยู่ภายใต้การควบคุมของค่าสถานะที่จำกัดกลุ่มไลบรารี Configuration.isRemoteCancellationPropagationFixEnabled (ค่าเริ่มต้นเป็นเท็จ) เพื่ออนุญาตการยืนยันเชิงทดลองและตรวจสอบว่าเมตริกความน่าเชื่อถือยังคงมีเสถียรภาพก่อนที่จะนำค่าสถานะออกอย่างถาวร (I387f3, b/420724435)

เวอร์ชัน 2.12.0-alpha01

15 กรกฎาคม 2026

androidx.work:work-*:2.12.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.12.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้

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

  • เพิ่ม API WorkMetricsQuery เพื่อกรองข้อมูลเมตริก (I132b4, b/522338412)
  • ใช้ workerDurationMillis และ totalRuntimeMillis ใน WorkMetricsInfo เพื่อติดตามระยะเวลาการดำเนินการของ Worker และเวลาทำงานสะสมทั้งหมด (I57f65, b/507212208)
  • เพิ่มตัวสร้าง retentionDuration (ระยะเวลา, API 26 ขึ้นไป) และ retentionTime/retentionTimeUnit (API 23 ขึ้นไป) ลงใน WorkMetricsInfoRepository เพื่ออนุญาตให้ล้างข้อมูลเมตริกเก่า โดยค่าเริ่มต้นจะเป็น 7 วัน (Ifdf2e, b/522338412)
  • เพิ่ม API ของโฟลว์สำหรับ WorkMetricsInfo ที่เสร็จสมบูรณ์ (I11ec2, b/507212999)
  • เพิ่มคำอธิบายประกอบทดลองที่ขาดหายไปในคลาส work-analytics (I1a055, b/528112001)
  • ตอนนี้ androidx.benchmark มีminSdk 24 รายการ (Ic2a85)
  • ใช้ stopReasonCounts, explicitRetryCount และ runAttemptCount ใน WorkMetricsInfo (I95498, b/507212225)
  • ใช้ WorkMetricsInfo API และสคีมาฐานข้อมูลเพื่อติดตามประวัติการดำเนินการงาน ซึ่งรวมถึงการประทับเวลาการเข้าคิว การยกเลิกการบล็อก การเริ่มต้นครั้งแรก และการสิ้นสุด (I163e9, b/479123623, b/507212482)
  • เพิ่ม API ทดลองเพื่อปิดใช้การจัดกำหนดการแบบฉวยโอกาสในกระบวนการ (I1062d, b/513299442)
  • เพิ่ม API เวอร์ชันทดลองเพื่อฟังWorkManagerเหตุการณ์การตั้งเวลา (I14487, b/448485695)
  • เพิ่มชื่อคลาสของ Worker ไปยัง WorkInfo (I57da1, b/448485695)
  • เพิ่มคำอธิบายประกอบที่ละเอียดยิ่งขึ้นใน API ตัวตรวจหาเหตุการณ์ทดลอง (Icaa8e, b/448485695)
  • เพิ่ม API ใหม่ที่อนุญาตให้ดึงข้อมูลอาร์เรย์สตริงที่กำหนดค่าเป็น Null ได้จากอินสแตนซ์ของคลาส Data (I78bc3, b/383071402)
  • สร้างอาร์ติแฟกต์ work-analytics (Idc7c2, b/465357612)
  • เพิ่ม API เวอร์ชันทดลองเพื่อตั้งค่า Listener สำหรับเหตุการณ์การดำเนินการของ Worker (I06b38, b/448485695)

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

  • ใช้ Dispatchers.Default แทนพูลเธรดที่กำหนดเองสำหรับการกำหนดค่า WM เริ่มต้น (Ic2c42, b/506239869)
  • ปรับปรุงและเพิ่มการทดสอบเพื่อจัดการผู้ปฏิบัติงานที่ไม่ดี (I500f3, b/506239869)
  • แก้ไข ConcurrentModificationException ในการเรียกใช้ Listener การดำเนินการ WorkManager's (I4cc18, b/506239869)
  • แก้ไขการขัดข้องของกระบวนการใน WorkManager เมื่อลงทะเบียนการเรียกกลับข้อจำกัดของเครือข่ายเนื่องจากไม่มีสิทธิ์ ACCESS_NETWORK_STATE (I7045a, b/446013734)
  • ปรับปรุงรายละเอียดบันทึกเมื่อเปิดใช้บันทึก DEBUG (Id9e5f, b/491209738)
  • แก้ไขข้อบกพร่องที่ทำให้การกำหนดเวลาของงานที่ลองใหม่ล้มเหลวในระบบปฏิบัติการ (I452fc, b/504085166, b/517339607)
  • แก้ไขลิงก์เอกสารอ้างอิง Configuration.Provider (Ieedb7, b/340913210)
  • ทำให้ฮุกของเหตุการณ์ไม่บล็อกการดำเนินการ (I27cd8, b/448485695)
  • WorkManager จะลองเริ่มต้นอีกครั้งใน SQLiteException ทั่วไป (I98436, b/485368721)
  • แก้ไขปัญหาที่นักพัฒนาแอปอาจได้รับรหัสเหตุผลในการหยุดที่ไม่มีอยู่จริงเป็น 0 โดยการแมปกับ WorkInfo.STOP_REASON_UNKNOWN (I0b175, b/479314734)
  • แก้ไขปัญหาเพิ่มเติมเกี่ยวกับการเรียกเครือข่ายที่ล้มเหลวจาก เบื้องหลังแม้ว่าจะตรงตามข้อจำกัดของเครือข่ายแล้วก็ตาม (Ic7f73, b/445324855)
  • จัดการข้อยกเว้นด้านความปลอดภัยใน NetworkStateTracker (I4b7ca, b/480123154)
  • ตรวจสอบว่าฮุกการดำเนินการได้รับWorkInfoสแนปชอตที่ถูกต้อง (I25ebb, b/448485695)
  • แก้ไขปัญหาที่คำขอเครือข่ายในเบื้องหลัง อาจล้มเหลวใน Android 15 (I60f24, I8a0a2, b/452081708) (I5abb7, b/465016918)
  • แก้ไขปัญหาที่ WorkRequest เป็นระยะๆ ซึ่งล้มเหลวเนื่องจากข้อยกเว้นที่ไม่ได้จัดการจะไม่ได้รับการกำหนดเวลาใหม่ (Ia6b92, b/443879071)

เวอร์ชัน 2.11

เวอร์ชัน 2.11.2

25 มีนาคม 2026

androidx.work:work-*:2.11.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.11.2 มีการคอมมิตเหล่านี้

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

  • แก้ไขปัญหาเพิ่มเติมเกี่ยวกับการเรียกเครือข่ายที่ล้มเหลวจากเบื้องหลังแม้ว่าจะตรงตามข้อจำกัดของเครือข่าย (Ic7f73, b/445324855)
  • จัดการข้อยกเว้นด้านความปลอดภัยใน NetworkStateTracker (I4b7ca, b/480123154)
  • แก้ไขปัญหาที่WorkRequestซึ่งล้มเหลวเป็นระยะเนื่องจากข้อยกเว้นที่ไม่ได้จัดการจะไม่ได้รับการกำหนดเวลาใหม่ (Ia6b92, b/443879071)

เวอร์ชัน 2.11.1

28 มกราคม 2026

androidx.work:work-*:2.11.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.11.1 มีการคอมมิตเหล่านี้

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

  • แก้ไขข้อจำกัดสถานะเครือข่ายไม่ให้ผ่านในขณะที่การเชื่อมต่อถูกบล็อกใน Android 15 ขึ้นไป (I5abb7, b/465016918)
  • แก้ไขการติดตามข้อจํากัดของเครือข่ายแบบคงที่ซึ่งไม่พิจารณาสถานะที่ถูกบล็อกสําหรับค่าเริ่มต้น (I8a0a2, b/452081708)
  • แก้ไขปัญหาเกี่ยวกับการส่งข้อจำกัดของคำขอเครือข่ายขณะที่การเชื่อมต่อถูกบล็อกใน Android 15 ขึ้นไป (I60f24, b/452081708)

เวอร์ชัน 2.11.0

22 ตุลาคม 2025

androidx.work:work-*:2.11.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.11.0 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.10.0

  • minSdk ได้รับการอัปเดตจาก API 21 เป็น API 23
  • เราได้เพิ่ม API setRemoteSessionTimeoutMillis ในเครื่องมือสร้างการกำหนดค่าของ WorkManager เพื่อให้กำหนดค่าระยะเวลาที่เซสชัน RemoteWorkManager จะยังคงใช้งานได้นับจากการใช้งานครั้งล่าสุด

เวอร์ชัน 2.11.0-rc01

8 ตุลาคม 2025

androidx.work:work-*:2.11.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.11.0-rc01 มีการคอมมิตเหล่านี้

เวอร์ชัน 2.11.0-beta01

24 กันยายน 2025

androidx.work:work-*:2.11.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.11.0-beta01 มีการคอมมิตเหล่านี้

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

  • เพิ่ม stopRunningWorkWithReason ไปยัง WorkManager TestDriver (Ie53b2, b/439955564)

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

  • แก้ไขการหยุดบริการที่ทำงานอยู่เบื้องหน้าเมื่อมีคำสั่งที่รอดำเนินการ (Iae822, b/432069314)
  • แก้ไขข้อผิดพลาดของ Worker ของโครูทีนระยะไกลที่ไม่สามารถยกเลิกการเชื่อมโยงบริการระยะไกล (I842f2, b/247113322)

เวอร์ชัน 2.11.0-alpha01

27 สิงหาคม 2025

androidx.work:work-*:2.11.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.11.0-alpha01 มีการคอมมิตเหล่านี้

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

  • เราได้อัปเดต minSdk จาก API 21 เป็น API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
  • เราได้เพิ่ม API setRemoteSessionTimeoutMillis ในเครื่องมือสร้างการกำหนดค่าของ WorkManager เพื่อให้กำหนดค่าระยะเวลาที่เซสชัน RemoteWorkManager จะใช้งานได้นับจากการใช้งานครั้งล่าสุด (Ib23c8)
  • เพิ่ม API ที่ทดลองใช้ใน WorkRequest.Builder เพื่อใช้การหยุดชั่วคราวเมื่อระบบขัดจังหวะการทำงาน (Ie2dc7, b/335513480)
  • เพิ่ม API การทดสอบเพื่อส่งในคลาส Worker อื่นไปยัง TestListenableWorkerBuilder นอกเหนือจากคลาสที่สร้างขึ้นเพื่อรองรับการใช้งาน WorkerFactory ที่กำหนดเอง (If6bff, b/389154854)

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

  • แคชความสามารถของเครือข่ายใน SharedNetworkCallback เพื่อป้องกัน IPC ที่ไม่จำเป็น (Ie4027, b/427115602)
  • แก้ไขปัญหาเกี่ยวกับการประเมินข้อจำกัดของเครือข่ายซึ่งรายการงานหลังจากรายการแรกจะไม่ได้รับความสามารถของเครือข่ายปัจจุบัน และจะได้รับ ConstraintsNotMet แทนหลังจากหมดเวลา (Ib6a66, b/427115602)

เวอร์ชัน 2.10

เวอร์ชัน 2.10.5

24 กันยายน 2025

androidx.work:work-*:2.10.5 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.10.5 มีการคอมมิตเหล่านี้

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

  • แก้ไขการหยุดบริการที่ทำงานอยู่เบื้องหน้าเมื่อมีคำสั่งที่รอดำเนินการ (Iae822, b/432069314)

เวอร์ชัน 2.10.4

10 กันยายน 2025

androidx.work:work-*:2.10.4 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.10.4 มีการเปลี่ยนแปลงเหล่านี้

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

  • แก้ไขปัญหาที่ RemoteCoroutineWorker ยกเลิกการเชื่อมโยงบริการระยะไกลไม่สำเร็จ (I842f2, b/247113322)

เวอร์ชัน 2.10.3

30 กรกฎาคม 2025

androidx.work:work-*:2.10.3 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.10.3 มีการเปลี่ยนแปลงเหล่านี้

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

  • แก้ไขปัญหาที่ผู้ปฏิบัติงานที่มีข้อจำกัดด้านเครือข่ายเหมือนกับผู้ปฏิบัติงานก่อนหน้าจะรายงานว่าไม่เป็นไปตามข้อจำกัด (b/427115602)

เวอร์ชัน 2.10.2

18 มิถุนายน 2025

androidx.work:work-*:2.10.2 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.10.2 มีการเปลี่ยนแปลงเหล่านี้

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

  • แก้ไขปัญหาเมื่อคงสถานะ Worker ด้วยคำขอเครือข่ายและความสามารถเริ่มต้น ซึ่งจะทำให้ความสามารถที่นำออกไปแล้วถูกเพิ่มกลับเข้ามาอีกครั้ง ส่งผลให้ Worker ที่มีข้อจำกัดด้านเครือข่ายทำงานผิดปกติ (b/409716532)
  • แก้ไขข้อบกพร่องที่ทำให้ Worker ที่มีข้อจำกัดด้านเครือข่ายไม่สามารถดำเนินการได้ทันทีเนื่องจากไม่เป็นไปตามข้อจำกัด แม้ว่าเครือข่ายและความสามารถจะพร้อมใช้งานก็ตาม (b/423403088)

เวอร์ชัน 2.10.1

23 เมษายน 2025

androidx.work:work-*:2.10.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.10.1 มีการเปลี่ยนแปลงเหล่านี้

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

  • ลดความเป็นไปได้ที่ TooManyRequestsException จะถูกส่งออกจาก WorkManager ในการจดทะเบียน NetworkCallback ที่ใช้สำหรับการติดตามข้อจำกัด (b/231499040, b309d5)

เวอร์ชัน 2.10.0

30 ตุลาคม 2024

androidx.work:work-*:2.10.0 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.10.0 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.9.1

  • เพิ่มแท็กการติดตามไปยังงานจาก WorkManager ซึ่งทำให้ "adb shell dumpsys jobscheduler" เข้าใจได้ง่ายขึ้นมาก เนื่องจากจะมีชื่อของ Worker ที่กำลังดำเนินการอยู่ นอกจากนี้ เรายังเพิ่มส่วนการติดตามรอบๆ พื้นที่สำคัญของ WorkManager
  • เพิ่ม Configuration.workerCoroutineContext เพื่อควบคุมตัวจัดสรรงานในตำแหน่งที่เรียกใช้ CoroutineWorker
  • นักพัฒนาแอปสามารถระบุ NetworkRequest เป็นข้อจำกัดสำหรับ Worker ผ่านเมธอด Constraints.setRequiredNetworkRequest ได้ ซึ่งจะช่วยให้ควบคุมได้อย่างละเอียดยิ่งขึ้นว่า Worker นี้ควรทำงานในเครือข่ายใด
  • 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 เมื่อหยุด Worker ที่ทำงานอยู่เบื้องหน้าเนื่องจากหมดเวลาการดำเนินการตามประเภทของบริการที่ทำงานอยู่เบื้องหน้า (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 แล้ว
  • แก้ไขการหมดเวลาของ Worker ที่ทำงานอยู่เบื้องหน้าประเภท "บริการระยะสั้น" และ "การซิงค์ข้อมูล" ซึ่งทำให้เกิด ANR เมื่อ WorkManager ไม่ได้เรียกใช้ stopSelf() การแก้ไขนี้ใช้ได้กับอุปกรณ์ที่มี API 34 และ 35 เท่านั้น ซึ่งเป็น API ที่มีการเปิดตัวประเภทบริการที่ทำงานอยู่เบื้องหน้า (ca06b2, b/364508145)
  • WorkerParameters API ใหม่ที่ช่วยให้เปลี่ยนกระบวนการระยะไกลที่ Worker ผูกกับเมื่อใช้ WorkerFactory ได้ (Ibdc8a, Ie8a90, I7373f)

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

  • แก้ไขข้อขัดข้องที่เกิดจาก WorkManager พยายามรีสตาร์ท Worker ที่ทำงานเป็นเวลานาน (เช่น Worker ที่ทำงานอยู่เบื้องหน้า) เมื่อประเภทงานที่ทำงานอยู่เบื้องหน้ามีสิทธิ์ที่ต้องมีล่วงหน้าของ 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 เพื่อควบคุม Dispatcher ที่มีการเรียกใช้ CoroutineWorker ซึ่งจะช่วยหลีกเลี่ยงการใช้ Dispatchers.Default ใน WorkManager ได้อย่างสมบูรณ์ (Icd1b7)
  • เพิ่มตัวแฮนเดิลข้อยกเว้นที่กำหนดเองสำหรับ Workers (Ib1b74, b/261190695)
  • ตอนนี้คุณสร้าง OneTimeWorkRequest.Builder และ PeriodicWorkRequest.Builder ด้วย KClass แทน Class ได้แล้ว val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build() (Ib55f6)
  • ระบบได้ย้ายข้อมูลคลาส WorkManager ไปยัง Kotlin แล้ว ตอนนี้เมธอดที่แสดงผล LiveData, ListenableFuture หรือ Flow จะให้ข้อมูลการยอมรับค่า Null ที่ถูกต้อง ซึ่งอาจต้องมีการเปลี่ยนแปลงในซอร์สโค้ดของไคลเอ็นต์ หากสมมติฐานเกี่ยวกับค่า Null ในโค้ดนั้นไม่ถูกต้อง (If6757)

เวอร์ชัน 2.10.0-alpha01

24 มกราคม 2024

androidx.work:work-*:2.10.0-alpha01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.10.0-alpha01 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • นักพัฒนาแอปสามารถระบุ NetworkRequest เป็นข้อจำกัดสำหรับ Worker ผ่านเมธอด Constraints.setRequiredNetworkRequest ได้ ซึ่งจะช่วยให้ควบคุมได้อย่างละเอียดยิ่งขึ้นว่า Worker นี้ควรทำงานในเครือข่ายใด

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

  • เพิ่มความสามารถในการระบุ NetworkRequest เป็นข้อจำกัด (Id98a1, b/280634452)

เวอร์ชัน 2.9

เวอร์ชัน 2.9.1

7 สิงหาคม 2024

androidx.work:work-*:2.9.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.9.1 มีการเปลี่ยนแปลงเหล่านี้

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

  • แก้ไขข้อขัดข้องที่เกิดจาก WorkManager พยายามรีสตาร์ท Worker ที่ทำงานเป็นเวลานาน (เช่น Worker ที่ทำงานอยู่เบื้องหน้า) เมื่อประเภทงานที่ทำงานอยู่เบื้องหน้ามีสิทธิ์ที่จำเป็นสำหรับ Android 14 ที่ถูกเพิกถอน (b/333957914)

เวอร์ชัน 2.9.0

29 พฤศจิกายน 2023

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

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.8.0

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

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

  • เพิ่ม stopReason ลงใน WorkInfo แล้ว ซึ่งจะทำให้ stopReason พร้อมใช้งานหลังจากที่ Worker ทำงานแล้ว ซึ่งอาจเป็นประโยชน์ในการรายงาน stopReason ในลักษณะที่ใช้งานได้ เนื่องจากเมื่อหยุด Worker แล้ว ระบบอาจปิดแอปเองอย่างรวดเร็ว (I21386)
  • อนุญาตให้ตั้งค่า Clock ผ่านการกำหนดค่าและใช้เพื่อขับเคลื่อนลำดับการดำเนินการของการทดสอบ Worker (Ic586e)
  • getStopReason() วิธีการถูกเพิ่มลงใน ListenableWorker ซึ่งให้คำใบ้ว่าเหตุใดจึงหยุดคนงาน (I07060)
  • เพิ่ม WorkManagerTestInitHelper#closeWorkDatabase() เพื่อหลีกเลี่ยงคำเตือนของ Closeguard เกี่ยวกับทรัพยากรที่รั่วไหล (Ia8d49)
  • ตอนนี้ตัวสร้างของ WorkInfo เป็นแบบสาธารณะแล้ว ซึ่งอาจมีประโยชน์ในการทดสอบ (Ia00b6, b/209145335)
  • ตอนนี้ work-runtime-ktx ว่างเปล่าแล้ว CoroutineWorker และตอนนี้ยูทิลิตีอื่นๆ ที่เฉพาะเจาะจงสำหรับ Kotlin พร้อมใช้งานในอาร์ติแฟกต์รันไทม์หลักของ Work แล้ว (I71a9a)
  • เพิ่มวิธีการ setNextScheduleTimeOverride ซึ่งช่วยให้ตั้งค่าตารางเวลาทำงานเป็นระยะได้อย่างแม่นยำ (I3b4da)
  • เพิ่ม getNextScheduleTimeMillis เพื่อรับข้อมูลเวลาที่กำหนดไว้ในการเรียกใช้ลงใน WorkInfo (I797e4)
  • ระบบจะเพิ่มข้อมูลการหน่วงเวลาเริ่มต้นและระยะเวลาลงใน WorkInfo (I52f2f)
  • เพิ่มเมธอด observe workers ผ่าน Flows ผ่านเมธอด getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow (If122a)
  • เพิ่มคำอธิบายประกอบ @RequiresApi(...) ที่ขาดหายไปลงในตัวสร้างและพร็อพเพอร์ตี้ของ Constraints ตอนนี้ค่าเหล่านี้จะสอดคล้องกับคำอธิบายประกอบที่เกี่ยวข้องในตัวตั้งค่าใน Constraints.Builder ซึ่งมีมาตั้งแต่ WorkManager เวอร์ชันแรกๆ (I6d7d2)
  • WorkManager มีขีดจำกัดแยกต่างหากสำหรับ Worker ของ 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 จะให้คำแนะนำว่าทำไมก่อนหน้านี้จึงหยุด Worker โดยสามารถค้นหาได้จากตัว Worker เองผ่านเมธอด getStopReason() หรือจาก WorkInfo ผ่าน getStopReason()

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

  • เพิ่ม stopReason ลงใน WorkInfo แล้ว ซึ่งจะทำให้ stopReason พร้อมใช้งานหลังจากที่ Worker ทำงาน ซึ่งอาจเป็นประโยชน์ในการรายงานstopReasonในลักษณะที่ใช้งานได้ เนื่องจากเมื่อหยุด Worker แล้ว ระบบอาจปิดแอปเองอย่างรวดเร็ว (I21386)
  • อนุญาตให้ตั้งค่า Clock ผ่านการกำหนดค่าและใช้เพื่อขับเคลื่อนลำดับการดำเนินการของการทดสอบ Worker (Ic586e)
  • เพิ่มเมธอด getStopReason() ลงใน ListenableWorker ซึ่งจะให้คำใบ้ว่าเหตุใดจึงหยุด Worker (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 ตอนนี้คุณสามารถดูความคืบหน้าของ Worker ผ่านโฟลว์ได้โดยใช้ WorkManager.getWorkInfosFlow และวิธีที่คล้ายกัน แทนที่จะใช้ LiveData
  • การจัดกำหนดการที่แม่นยำสำหรับผู้ปฏิบัติงานเป็นครั้งคราวผ่าน setNextScheduleTimeOverride ซึ่งจะช่วยให้คำนวณตารางเวลาการทำงานแบบเป็นช่วงถัดไปแบบไดนามิกได้ ซึ่งสามารถใช้เพื่อใช้งานฟีเจอร์ขั้นสูง เช่น เวลาการรีเฟรชแบบปรับได้ ลักษณะการลองใหม่ที่กำหนดเอง หรือการทำให้ Worker ของฟีดข่าวทำงานก่อนที่ผู้ใช้จะตื่นทุกเช้าโดยไม่มีการเปลี่ยนแปลง ExistingPeriodicWorkPolicy.UPDATE ควรใช้ร่วมกับเทคนิคเหล่านี้เพื่อหลีกเลี่ยงการยกเลิก Worker ที่กำลังทำงานอยู่ขณะกำหนดเวลา Worker ตัวถัดไป
  • WorkManagerการทดสอบด้วยการจับคู่เธรดที่ตรงกับการใช้งานจริง ExecutorsMode.PRESERVE_EXECUTORS สามารถใช้เพื่อเก็บรักษาตัวดำเนินการที่ตั้งค่าไว้ใน Configuration และใช้เทรดหลักจริง
  • เราได้ย้าย 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)
  • เพิ่มเมธอด observe workers ผ่าน Flows ผ่านเมธอด getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow (If122a)
  • เพิ่มคำอธิบายประกอบ @RequiresApi(...) ที่ขาดหายไปลงในตัวสร้างและพร็อพเพอร์ตี้ของข้อจำกัด ตอนนี้ค่าเหล่านี้จะสอดคล้องกับคำอธิบายประกอบที่เกี่ยวข้องในตัวตั้งค่าใน Constraints.Builder ซึ่งมีมาตั้งแต่ WorkManager เวอร์ชันแรกๆ (I6d7d2)
  • WorkManager มีขีดจำกัดแยกต่างหากสำหรับ Content URI Worker เพื่อให้มีสล็อตที่รับประกันใน 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 ที่มีอยู่ แต่รบกวนน้อยกว่า โดยจะไม่ยกเลิก Worker หากกำลังทำงานอยู่ และจะรักษาเวลาการจัดคิวไว้ โดยระบบจะคำนวณการหน่วงเวลาเริ่มต้นและระยะเวลาจากเวลาการจัดคิวเดิม ไม่ใช่เวลาอัปเดต 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 มีคอมมิตเหล่านี้

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

  • แก้ไขปัญหาเกี่ยวกับตัวจัดตารางเวลาแบบ Greedy ซึ่งจะป้องกันไม่ให้ Worker ทำงานทันทีเมื่อมีการโหลด (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() ที่จะแสดงผลการสร้างของคนงาน Worker มีหลายรุ่นหากได้รับการอัปเดตผ่าน WorkManager.updateWork หรือ WorkManager.enqueueUniquePeriodicWork โดยใช้ ExistingPeriodicWorkPolicy.UPDATE โปรดทราบว่าหาก Worker กำลังทำงานอยู่ วิธีนี้อาจแสดงผล Worker รุ่นใหม่กว่า Worker ที่กำลังทำงานอยู่ หากมีการอัปเดตเกิดขึ้นในระหว่างการเรียกใช้ Worker (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 ที่มีอยู่ แต่รบกวนน้อยกว่า โดยจะไม่ยกเลิก Worker หากกำลังทำงานอยู่ และจะรักษาเวลาในการจัดคิวไว้ โดยระบบจะคำนวณการหน่วงเวลาเริ่มต้นและระยะเวลาจากเวลาในการจัดคิวเดิม ไม่ใช่เวลาอัปเดต 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)
  • เพิ่มเมธอด Helper WorkQuery.fromIds เพื่อสร้าง WorkQuery จากรหัสโดยตรง (Ie5bdf, b/199919736)
  • ตอนนี้ RxWorker มี setForeground returning Completable ที่ ใช้แทน setForegroundInfoAsync ที่แสดงผล ListenableFuture ได้แล้ว (I85156)
  • ตอนนี้ RxWorker สำหรับ RxJava 2 มี getForegroundInfo ที่แสดงผล Single ซึ่ง ใช้แทน getForegroundInfoAsync ที่แสดงผล ListenableFuture ได้แล้ว (I21c91, b/203851459)
  • ตอนนี้ RxWorker สำหรับ RxJava 3 มี getForegroundInfo ที่ส่งคืน Single ซึ่ง ใช้แทน getForegroundInfoAsync ที่ส่งคืน ListenableFuture ได้แล้ว (I1ca8a)
  • ตอนนี้ RxWorker มี setForeground returning 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:รองรับ Worker แบบหลายกระบวนการสำหรับ 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

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

    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" />
    
  • เพิ่มการรองรับสำหรับ 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)
  • การรองรับ Worker แบบหลายกระบวนการสำหรับ 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 เพื่อให้ใช้ ids ในการค้นหา WorkInfos ได้ (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 ที่เสร็จสมบูรณ์แล้วซึ่งไม่มีการขึ้นต่อกันที่ยังไม่เสร็จสมบูรณ์ออกอย่างจริงจังมากขึ้น ระยะเวลาบัฟเฟอร์เปลี่ยนจาก 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 ในกระบวนการจะพิจารณาเฉพาะการดำเนินการที่ไม่ได้ล่าช้าและเป็นไปตามข้อจำกัด ตอนนี้ตัวกำหนดเวลางานที่กำลังดำเนินการจะติดตาม WorkRequests ซึ่งอาจมีการเรียกใช้ในอนาคต รวมถึง PeriodicWorkRequest 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>"
    

    ซึ่งจะให้ข้อมูลที่เป็นประโยชน์มากมาย เช่น

    • คำของานที่ดำเนินการเสร็จสมบูรณ์ในช่วง 24 ชั่วโมงที่ผ่านมา
    • WorkRequest ที่กำลัง RUNNING
    • คำของานที่กำหนดเวลาไว้ (aosp/1235501)
  • เพิ่ม ExistingWorkPolicy.APPEND_OR_REPLACE ซึ่งคล้ายกับ APPEND แต่จะแทนที่เชนที่มีข้อกำหนดเบื้องต้นที่ถูกยกเลิกหรือล้มเหลว (b/134613984, aosp/1199640)

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

  • เพิ่มการรองรับการเพิ่ม Factory แบบไดนามิกเพื่อมอบสิทธิ์เมื่อใช้ 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
    • เพิ่มกฎการตรวจสอบใหม่ที่ช่วยให้มั่นใจได้ว่าListenableWorkerการติดตั้งใช้งานจะpublicเมื่อใช้ WorkerFactory เริ่มต้น (aosp/1291262)
  • ตอนนี้ระบบจะส่งสัญญาณการเรียกไปยัง setForegroundAsync() ที่ไม่เสร็จสมบูรณ์ก่อนที่ ListenableWorker จะเสร็จสมบูรณ์ผ่าน IllegalStateException ใน ListenableFuture ที่ส่งคืน (aosp/1262743)

  • แก้ไขข้อบกพร่องที่ทำให้ ForegroundService ไม่หยุดทำงานหลังจากที่ Worker ในเบื้องหน้าถูกขัดจังหวะ (b/155579898, aosp/1302153)

  • แก้ไขข้อบกพร่องที่ทำให้ WorkManager พยายามเรียกใช้หลายอินสแตนซ์ของ Worker ที่เชื่อมโยงกับ Foreground Service (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 ที่เชื่อมโยงกับ Foreground Service (b/156310133, aosp/1309853)
  • เพิ่มการรองรับการเพิ่ม Factory แบบไดนามิกเพื่อมอบสิทธิ์เมื่อใช้ 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)
  • เพิ่มกฎการตรวจสอบใหม่เพื่อให้มั่นใจว่าListenableWorkerการติดตั้งใช้งานจะpublicเมื่อใช้ WorkerFactory เริ่มต้น (aosp/1291262)

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

  • ตอนนี้การเรียกใช้ setProgressAsync() หลังจากที่ ListenableWorker ทำงานเสร็จแล้วจะส่งสัญญาณ Exception ผ่าน ListenableFuture (aosp/1285494)
  • ตอนนี้ WorkQuery.Builder มีเครื่องหมาย final แล้ว (aosp/1275037)
  • เปลี่ยนชื่อWorkQuery.Builderเมธอดจาก FactorywithStates 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 ตอนนี้ตัวกำหนดตารางเวลาในกระบวนการมีความสามารถมากขึ้นแล้ว ก่อนหน้านี้ตัวกำหนดเวลาระหว่างกระบวนการจะพิจารณาเฉพาะการดำเนินการที่ไม่ล่าช้าและเป็นไปตามข้อจำกัด ตอนนี้ตัวกำหนดตารางเวลาในกระบวนการจะติดตาม WorkRequests ที่อาจดำเนินการในอนาคต รวมถึง PeriodicWorkRequests นอกจากนี้ ตัวกำหนดเวลากระบวนการภายในไม่สังเกตขีดจำกัดการจัดกำหนดการ (แต่ยังคงจำกัดขนาดของ Executor ที่ WorkManager ใช้) ซึ่งหมายความว่าตอนนี้แอปพลิเคชันสามารถดำเนินการWorkRequestได้มากขึ้นเมื่อแอปอยู่เบื้องหน้า (aosp/1185778)

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

    • คำของานที่ดำเนินการเสร็จสมบูรณ์ในช่วง 24 ชั่วโมงที่ผ่านมา
    • WorkRequest ที่กำลัง RUNNING
    • คำของานที่กำหนดเวลาไว้ (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 มีคอมมิตต่อไปนี้

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

  • แก้ไขข้อบกพร่องที่ทำให้ Workers ที่ทำงานเป็นเวลานานหลายรายการทำงานหลังจากเกินกรอบเวลาการดำเนินการ 10 นาที (aosp/1247484, b/150553353)
  • แก้ไข Lint ของ WorkManager IssueRegistry ขอขอบคุณ @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)
  • ปรับปรุงการจัดการการยกเลิกการแจ้งเตือนสำหรับ Worker ที่ทำงานเป็นเวลานานเมื่อมีการยกเลิก Worker (aosp/1228346)

เวอร์ชัน 2.3.1

เวอร์ชัน 2.3.1

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

androidx.work:work-*:2.3.1 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.1 มีคอมมิตเหล่านี้

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

  • จัดการวงจรของ Notification ให้ดียิ่งขึ้นสำหรับ Worker ที่ทำงานเป็นเวลานานซึ่งจะทำงานเมื่อ Service ที่อยู่เบื้องหน้าทำงานอยู่ (aosp/1218539, b/147249312)
  • ตอนนี้ WorkManager ต้องใช้ androidx.sqlite:sqlite-framework:2.1.0 เวอร์ชันเสถียร (aosp/1217729)
  • เพิ่มกฎการตรวจสอบโค้ดเพื่อให้แน่ใจว่าได้ระบุ foregroundServiceType ใน AndroidManifest.xml เมื่อใช้ foregroundServiceType ใน ForegroundInfo (aosp/1214207, b/147873061)

เวอร์ชัน 2.3.0

เวอร์ชัน 2.3.0

22 มกราคม 2020

androidx.work:work-*:2.3.0 เปิดตัวโดยไม่มีการเปลี่ยนแปลงใดๆ ตั้งแต่ 2.3.0-rc01 เวอร์ชัน 2.3.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 2.2.0

  • การสนับสนุนสำหรับงานที่ใช้เวลานานหรืองานสำคัญผ่าน ListenableWorker#setForegroundAsync()
  • การสนับสนุนความคืบหน้าของคนทำงานผ่าน ListenableWorker#setProgressAsync()
  • ตอนนี้ WorkManager จะรวมกฎ Lint เพิ่มเติมเป็นส่วนหนึ่งของไลบรารี ซึ่งจะช่วยตรวจจับข้อบกพร่องได้ตั้งแต่เนิ่นๆ

เวอร์ชัน 2.3.0-rc01

8 มกราคม 2020

androidx.work:work-*:2.3.0-rc01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-rc01 มีคอมมิตเหล่านี้

รุ่นนี้เหมือนกับ 2.3.0-beta02

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

  • ตอนนี้อาร์ติแฟกต์ work-testing จะกำหนดทรัพยากร Dependency api ใน work-runtime-ktx (aosp/1194410)

เวอร์ชัน 2.3.0-beta02

18 ธันวาคม 2019

androidx.work:work-*:2.3.0-beta02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 2.3.0-beta02 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มข้อความแสดงข้อผิดพลาดที่ดีขึ้นสำหรับข้อยกเว้น SQLite ที่กู้คืนไม่ได้ (aosp/1185777)
  • เพิ่มกฎการตรวจสอบโค้ดที่ช่วยให้มั่นใจได้ว่าระบบจะนำ Content Provider 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)
  • แก้ไขข้อบกพร่องที่ทำให้ระบบสร้างเชน WorkContinuation ไม่ถูกต้องเมื่อมีรายการ WorkRequest ว่าง (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 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มกฎการตรวจสอบใหม่ซึ่งป้องกันข้อผิดพลาดของนักพัฒนาซอฟต์แวร์เนื่องจากการติดตั้งใช้งาน 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 จะนำข้อมูลความคืบหน้าออกเมื่อ Worker ถูกขัดจังหวะหรือเข้าสู่สถานะสิ้นสุด (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 ใหม่เหล่านี้ช่วยให้ Workers สามารถสื่อสารข้อมูลความคืบหน้าผ่าน WorkInfo ซึ่งมี API getProgress ที่เกี่ยวข้อง (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 จะยังคงกลับไปใช้ AlarmManager ในอุปกรณ์รุ่นเก่า

เวอร์ชัน 2.2.0-rc01

30 กรกฎาคม 2019

androidx.work:work-*:2.2.0-rc01 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

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

  • แก้ไขข้อบกพร่องในการติดตั้งใช้งาน AlarmManager ที่ทำให้ Service ปิดตัวก่อนเวลาอันควรและส่งผลให้เกิด 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 โดยเป็นทรัพยากร Dependency ที่ไม่บังคับซึ่งช่วยให้การประมวลผลในเบื้องหลังมีความน่าเชื่อถือและมีประสิทธิภาพมากขึ้นใน API เวอร์ชันเก่า หากแอปใช้บริการ Google Play ให้เพิ่มทรัพยากร Dependency นี้ลงในไฟล์ Gradle เพื่อรับการสนับสนุน GCMNetworkManager โดยอัตโนมัติ หากบริการ Google Play ไม่พร้อมใช้งาน 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 มาเป็น 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
  • เพิ่มการเรียกที่ป้องกันไว้บางส่วนไปยัง API ของ JobScheduler สำหรับอุปกรณ์ที่ทำงานไม่ถูกต้อง

เวอร์ชัน 2.1.0-alpha03

5 มิถุนายน 2019

androidx.work:*:2.1.0-alpha03 ได้รับการเผยแพร่แล้ว

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

  • ปรับปรุงเอกสารประกอบสำหรับ PeriodicWorkRequest
  • WorkManagerTestInitHelper ตอนนี้ใช้ตัวดำเนินการพื้นหลังที่ถูกต้องสำหรับการทดสอบแล้ว
  • การแก้ไขปัญหา SQLite เมื่อจัดการธุรกรรมขนาดใหญ่ในอุปกรณ์บางรุ่น (b/130182503)
  • ตอนนี้การขึ้นต่อกันของ 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
  • แก้ไขข้อขัดข้องในกรณีที่พบได้ยากซึ่งเกิดจากการติดตามข้อจำกัดที่ไม่ได้รับการล้างใน 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

ดึงดูด

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 สำหรับเวอร์ชันเสถียร 1.0.0 ของ WorkManager รุ่นนี้มีการแก้ไขข้อบกพร่อง 2 รายการ

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

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

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

เวอร์ชัน 1.0.0-rc01

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

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

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

  • ตอนนี้การติดตั้งใช้งานที่อิงตาม AlarmManager จะพิจารณาflexหน้าต่าง สำหรับ PeriodicWorkRequest อย่างถูกต้องแล้ว 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 รั่วไหล Wakelocks เมื่อใช้การติดตั้งใช้งานที่อิงตาม AlarmManager

เวอร์ชัน 1.0.0-beta03

25 มกราคม 2019

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

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

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

เวอร์ชัน 1.0.0-beta02

15 มกราคม 2019

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

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

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

เวอร์ชัน 1.0.0-beta01

19 ธันวาคม 2018

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

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

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

เวอร์ชัน 1.0.0-alpha13

12 ธันวาคม 2018

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

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

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

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

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

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

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

เวอร์ชัน 1.0.0-alpha11

8 พฤศจิกายน 2018

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

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

  • work-runtime-ktx เปิดตัว CoroutineWorker ใหม่
  • WorkStatus เปลี่ยนชื่อเป็น WorkInfo แล้ว เราได้เปลี่ยนชื่อตัวแปรของเมธอด getStatus ที่เกี่ยวข้องทั้งหมดเป็นตัวแปรของ getWorkInfo ที่เกี่ยวข้องแล้ว นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • ListenableWorker.onStopped() ไม่รับอีกต่อไปมีอาร์กิวเมนต์บูลีนที่แสดงว่ามีการยกเลิก WorkRequest หรือไม่ WorkManager ไม่ได้แยกความแตกต่างนี้อีกต่อไป นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • เปลี่ยนชื่อแพ็กเกจ androidx.work.test เป็นแพ็กเกจ androidx.work.testing แล้ว นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • ตัวตั้งค่าใน Constraints จะไม่อยู่ใน API สาธารณะ อีกต่อไป นี่เป็นการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง
  • WorkerParameters.getTriggeredContentUris() และ WorkerParameters.getTriggeredContentAuthorities() แสดงผลอาร์เรย์ก่อนหน้านี้ ตอนนี้เมธอดเหล่านี้จะแสดงผลคอลเล็กชัน นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  • เปลี่ยนชื่อ ListenableWorker.onStartWork() เป็น ListenableWorker.startWork() แล้ว นี่เป็นการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง
  • ตัวสร้างสำหรับ WorkStatus ไม่ได้เป็นส่วนหนึ่งของ API สาธารณะอีกต่อไป นี่เป็นการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง
  • Configuration.getMaxJobSchedulerID() และ Configuration.getMinJobSchedulerID() เปลี่ยนชื่อเป็น Configuration.getMinJobSchedulerId() และ Configuration.getMaxJobSchedulerId() ตามลำดับ นี่เป็นการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง
  • เพิ่มคำอธิบายประกอบ @NonNull จำนวนมากใน API สาธารณะเพื่อปรับปรุงการยศาสตร์ของ API
  • เพิ่ม WorkManager.enqueueUniqueWork() API เพื่อจัดคิว OneTimeWorkRequest ที่ไม่ซ้ำกันโดยไม่ต้องสร้าง WorkContinuation
  • ตอนนี้ตัวแปรทั้งหมดของเมธอด enqueue และ cancel ใน WorkManager จะแสดงผลประเภท Operation ใหม่ นี่เป็นการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง
  • enqueue ทุกรูปแบบจะไม่ยอมรับ varargs สำหรับ WorkRequests อีกต่อไป นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ โปรดใช้คอลเล็กชันแทน คุณใช้ 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 ทุกรูปแบบจะไม่ยอมรับ varargs สำหรับ WorkRequests อีกต่อไป
  • ตอนนี้การพยายาม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 Coroutines (เมื่อเผยแพร่เวอร์ชันที่เสถียรแล้ว) และ 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() เพื่อเรียกใช้โค้ดได้เมื่อการดำเนินการเสร็จสมบูรณ์
    • โปรดทราบว่า ListenableFutures เหล่านี้ไม่ได้บอกว่าการดำเนินการสำเร็จหรือไม่ แต่จะบอกเพียงว่าการดำเนินการเสร็จสิ้นแล้ว คุณยังคงต้องเชื่อมโยงเมธอด WorkManager เพื่อดูข้อมูลนี้
    • เราไม่สนใจการเรียกใช้ cancel() ในออบเจ็กต์เหล่านี้ เนื่องจากทำให้เกิดความสับสนและยากต่อการให้เหตุผล (คุณกำลังยกเลิกการดำเนินการหรือผลงานที่ได้) ซึ่งเป็นไปตามสัญญาของ Future
    • เราได้จัดเตรียมตัวแปร ListenableFuture และเปลี่ยนชื่อตัวแปรที่มีอยู่ซึ่งแสดงผล LiveData ให้มี "LiveData" เป็นส่วนหนึ่งของชื่ออย่างชัดเจน (เช่น getStatusesByIdLiveData(UUID)) เพื่อให้สอดคล้องกับเมธอด 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

ดึงดูด

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 Constructor, 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 ที่อาจเกิดขึ้นเมื่อกำหนดเวลาใหม่ให้ Worker ทั้งหมดหลังจากบังคับหยุดหรือรีบูต b/110507716
  • เพิ่มคำอธิบายประกอบเกี่ยวกับความสามารถในการเว้นว่างให้กับ 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 เมื่อใช้ทรัพยากร 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
  • ย้ายการล้างการทำงานขณะล็อกที่เชื่อมโยงกับ 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