WorkManager
Bản cập nhật mới nhất | Bản phát hành ổn định | Bản phát hành dùng thử | Bản phát hành beta | Bản phát hành alpha |
---|---|---|---|---|
Ngày 30 tháng 10 năm 2024 | 2.9.1 | - | - | - |
Khai báo phần phụ thuộc
Để thêm một phần phụ thuộc trên WorkManager, bạn phải thêm kho lưu trữ Google Maven vào dự án:
Thêm các phần phụ thuộc cho cấu phần phần mềm bạn cần trong tệp build.gradle
cho ứng dụng hoặc mô-đun của mình:
Groovy
dependencies { def work_version = "2.9.1" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.9.1" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
Để biết thông tin về cách sử dụng các phần mở rộng Kotlin, hãy xem tài liệu ktx.
Để biết thêm thông tin về các phần phụ thuộc, hãy xem nội dung Thêm phần phụ thuộc cho bản dựng.
Ý kiến phản hồi
Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.
Xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin.
Phiên bản 2.10
Phiên bản 2.10.0
Ngày 30 tháng 10 năm 2024
Phát hành androidx.work:work-*:2.10.0
. Phiên bản 2.10.0 bao gồm các thay đổi sau.
Các thay đổi đáng kể kể từ phiên bản 2.9.1
- Thêm các thẻ theo dõi vào Công việc từ
WorkManager
, giúp "adb shell dumpsys Jobscheduler" hiểu rõ hơn rất nhiều vì nó chứa tên của Worker đang được thực thi. Các phần theo dõi cũng được thêm vào xung quanh các khu vực chính củaWorkManager
. - Thêm
Configuration.workerCoroutineContext
để điều khiển trình điều phối nơiCoroutineWorker
được thực thi. - Nhà phát triển có thể chỉ định
NetworkRequest
làm quy tắc ràng buộc cho một worker thông qua phương thứcConstraints.setRequiredNetworkRequest
. Điều này cho phép kiểm soát chi tiết hơn về mạng mà worker này sẽ chạy. WorkManager
2.10.0 hiện được biên dịch bằng SDK 35 và chứa nhiều thay đổi để tương thích với SDK 35.
Phiên bản 2.10.0-rc01
Ngày 24 tháng 10 năm 2024
Phát hành androidx.work:work-*:2.10.0-rc01
. Phiên bản 2.10.0-rc01 bao gồm các thay đổi sau.
Phiên bản 2.10.0-beta01
Ngày 2 tháng 10 năm 2024
Phát hành androidx.work:work-*:2.10.0-beta01
. Phiên bản 2.10.0-beta01 bao gồm các thay đổi sau.
Phiên bản 2.10.0-alpha04
Ngày 18 tháng 9 năm 2024
Phát hành androidx.work:work-*:2.10.0-alpha04
. Phiên bản 2.10.0-alpha04 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm lý do dừng
STOP_REASON_FOREGROUND_SERVICE_TIMEOUT
cho trường hợp một worker trên nền trước bị dừng do hết thời gian thực thi dựa trên loại dịch vụ trên nền trước. (Ibd0af)
Phiên bản 2.10.0-alpha03
Ngày 4 tháng 9 năm 2024
Phát hành androidx.work:work-*:2.10.0-alpha03
. Phiên bản 2.10.0-alpha03 bao gồm các thay đổi sau.
Tính năng mới
- Thêm thẻ theo dõi vào Jobs từ
WorkManager
, giúp "adb shell dumpsys jobscheduler" dễ hiểu hơn nhiều vì thẻ này sẽ chứa tên của Worker đang được thực thi. Các phần theo dõi cũng được thêm vào xung quanh các khu vực chính củaWorkManager
.
Thay đổi về API
- WorkManager 2.10.0 hiện được biên dịch bằng SDK 35.
- Khắc phục lỗi hết thời gian chờ của worker trên nền trước thuộc loại "dịch vụ ngắn" và "đồng bộ hoá dữ liệu", gây ra lỗi ANR khi
WorkManager
không gọistopSelf()
. Bản sửa lỗi này chỉ áp dụng cho các thiết bị có API 34 và 35 được dùng các loại dịch vụ trên nền trước. (ca06b2, b/364508145) - Các API
WorkerParameters
mới giúp bạn có thể chuyển đổi quy trình từ xa màWorker
liên kết với khi sử dụngWorkerFactory
. (Ibdc8a, Ie8a90, I7373f)
Sửa lỗi
- Khắc phục sự cố do
WorkManager
cố gắng khởi động lại một worker chạy trong thời gian dài (tức là worker trên nền trước) khi loại công việc trên nền trước có các quyền tiên quyết của Android 14 đã bị thu hồi. (b/333957914) - Xoá phần trình bày quyền truy cập vào API nền tảng mới theo cách thủ công vì việc này diễn ra tự động thông qua tính năng tạo mô hình API khi sử dụng R8 với AGP 7.3 trở lên (ví dụ: R8 phiên bản 3.3) và cho tất cả các bản dựng khi sử dụng AGP 8.1 trở lên (ví dụ: D8 phiên bản 8.1). Những ứng dụng không sử dụng AGP nên cập nhật lên D8 phiên bản 8.1 trở lên. Xem bài viết này để biết thêm chi tiết. (Ia60e0, b/345472586)
Phiên bản 2.10.0-alpha02
Ngày 17 tháng 4 năm 2024
Phát hành androidx.work:work-*:2.10.0-alpha02
. Phiên bản 2.10.0-alpha02 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm khả năng phát các span theo dõi qua
@RestrictTo
Tracer
có thể định cấu hình trongWorkManager
. (I17d7f, b/260214125) - Thêm
Configuration.workerCoroutineContext
để điều khiển trình điều phối nơiCoroutineWorker
được thực thi. Điều này giúp tránh hoàn toàn việc sử dụngDispatchers.Default
trongWorkManager
. (Icd1b7) - Thêm trình xử lý ngoại lệ tuỳ chỉnh cho Worker (Ib1b74, b/261190695)
- Giờ đây, bạn có thể tạo
OneTimeWorkRequest.Builder
vàPeriodicWorkRequest.Builder
bằngKClass
thay vìClass
:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()
(Ib55f6) - Di chuyển lớp
WorkManager
sang Kotlin. Giờ đây, các phương thức trả vềLiveData
,ListenableFuture
hoặcFlow
sẽ cung cấp thông tin chính xác về tính chất rỗng. Điều này có thể yêu cầu thay đổi mã nguồn của ứng dụng nếu giả định về tính chất rỗng trong mã đó không chính xác. (If6757)
Phiên bản 2.10.0-alpha01
Ngày 24 tháng 1 năm 2024
Phát hành androidx.work:work-*:2.10.0-alpha01
. Phiên bản 2.10.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
- Nhà phát triển có thể chỉ định
NetworkRequest
làm quy tắc ràng buộc cho một worker thông qua phương thứcConstraints.setRequiredNetworkRequest
. Điều này cho phép kiểm soát chi tiết hơn đối với mạng mà worker này sẽ chạy.
Thay đổi về API
- Thêm khả năng chỉ định
NetworkRequest
làm quy tắc ràng buộc. (Id98a1, b/280634452)
Phiên bản 2.9
Phiên bản 2.9.1
Ngày 7 tháng 8 năm 2024
Phát hành androidx.work:work-*:2.9.1
. Phiên bản 2.9.1 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục sự cố do
WorkManager
cố gắng khởi động lại một worker chạy trong thời gian dài (tức là worker trên nền trước) khi loại công việc trên nền trước có các quyền bắt buộc của Android 14 bị thu hồi. (b/333957914)
Phiên bản 2.9.0
Ngày 29 tháng 11 năm 2023
Phát hành androidx.work:work-*:2.9.0
. Phiên bản 2.9.0 bao gồm các thay đổi sau.
Thay đổi quan trọng kể từ phiên bản 2.8.0
- Khả năng quan sát thông qua
Flow
. Thay vìLiveData
, bạn hiện có thể quan sát tiến trình của Worker thông qua Flow thông quaWorkManager.getWorkInfosFlow
và các phương thức tương tự. - Giờ đây,
WorkManager
sẽ đưa ra gợi ý về lý do một worker đã bị dừng trước đó. Bạn có thể truy vấn thông tin này từ chính worker thông qua phương thứcgetStopReason()
hoặc từWorkInfo
thông quagetStopReason()
. - Lên lịch chính xác cho worker định kỳ thông qua
setNextScheduleTimeOverride
. Điều này cho phép tính toán linh động lịch biểu công việc định kỳ tiếp theo. Lịch biểu này có thể được dùng để triển khai các tính năng nâng cao như thời gian làm mới thích ứng, hành vi thử lại tuỳ chỉnh hoặc chạy trình chạy nguồn cấp dữ liệu tin tức trước khi người dùng thức dậy mỗi sáng mà không bị trễ. Bạn nên sử dụngExistingPeriodicWorkPolicy.UPDATE
với các kỹ thuật này để tránh huỷ một worker đang chạy trong khi lên lịch cho worker tiếp theo. - Kiểm thử WorkManager bằng cách so khớp luồng với bản phát hành chính thức. Bạn có thể sử dụng
ExecutorsMode.PRESERVE_EXECUTORS
tronginitializeTestWorkManager
để duy trì các trình thực thi được đặt trongConfiguration
và sử dụng luồng chính thực. - Các API coroutine như
CoroutineWorker
đã được chuyển từ cấu phần phần mềm bổ sung work-runtime-ktx sang cấu phần phần mềm chính work-runtime. work-runtime-ktx hiện đang trống.
Thay đổi về API
- Thêm
stopReason
vàoWorkInfo
. Phương thức này cung cấpstopReason
sau khi worker chạy. Điều này có thể hữu ích trong việc báo cáostopReason
theo cách hữu dụng, vì sau khi một worker bị dừng, chính ứng dụng đó có thể bị tắt rất nhanh. (I21386) - Cho phép thiết lập
Clock
thông qua cấu hình và dùng để thúc đẩy trình tự thực thi của các chương trình kiểm thử Worker. (Ic586e) - Phương thức
getStopReason()
đã được thêm vàoListenableWorker
để gợi ý lý do worker bị dừng. (I07060) - Thêm
WorkManagerTestInitHelper#closeWorkDatabase()
để tránh cảnh báo của Closeguard về tài nguyên bị rò rỉ. (Ia8d49) - Hàm khởi tạo của
WorkInfo
hiện ở chế độ công khai, điều này có thể hữu ích trong quá trình kiểm thử. (Ia00b6, b/209145335) work-runtime-ktx
hiện trống,CoroutineWorker
và các tiện ích dành riêng cho Kotlin khác hiện có trong cấu phần phần mềm thời gian chạy công việc chính. (I71a9a)- Thêm phương thức
setNextScheduleTimeOverride
, cho phép cài đặt chính xác lịch biểu công việc định kỳ (I3b4da) - Thêm
getNextScheduleTimeMillis
để lấy thông tin về thời gian chạy theo lịch biểu vàoWorkInfo
. (I797e4) - Thông tin về độ trễ ban đầu và chu kỳ được thêm vào
WorkInfo
. (I52f2f) - Thêm phương thức quan sát worker thông qua Flows thông qua các phương thức
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) - Thêm chú thích
@RequiresApi(...)
bị thiếu vào các hàm khởi tạo và thuộc tính củaConstraints
. Các phương thức này hiện đã được điều chỉnh để phù hợp với các chú giải tương ứng trên phương thức setter trongConstraints.Builder
đã có từ các phiên bản ban đầu củaWorkManager
. (I6d7d2) WorkManager
hiện có một giới hạn riêng cho worker uri nội dung để cung cấp cho chúng các vị trí được đảm bảo trongJobScheduler
nhằm tránh việc thiếu nội dung cập nhật khi tải cao. Bạn có thể định cấu hình giới hạn này thông quaConfiguration.Builder.setContentUriTriggerWorkersLimit
. (Ic128f)- Các quy tắc ràng buộc được thêm vào
WorkInfo
. (I162c0)
Phiên bản 2.9.0-rc01
Ngày 18 tháng 10 năm 2023
Phát hành androidx.work:work-*:2.9.0-rc01
. Phiên bản 2.9.0-rc01 bao gồm các thay đổi sau.
- Không có thay đổi nào kể từ bản phát hành beta gần đây nhất
Phiên bản 2.9.0-beta01
Ngày 6 tháng 9 năm 2023
Phát hành androidx.work:work-*:2.9.0-beta01
. Phiên bản 2.9.0-beta01 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm hằng số cho các lý do dừng được
WorkInfo.stopReason
vàListenableWorker.stopReason
(I0cc00) trả về
Phiên bản 2.9.0-alpha02
Ngày 26 tháng 7 năm 2023
Phát hành androidx.work:work-*:2.9.0-alpha02
. Phiên bản 2.9.0-alpha02 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây,
WorkManager
sẽ đưa ra gợi ý về lý do một worker đã bị dừng trước đó. Bạn có thể truy vấn thông tin này từ chính worker thông qua phương thứcgetStopReason()
hoặc từWorkInfo
thông quagetStopReason()
.
Thay đổi về API
- Thêm
stopReason
vàoWorkInfo
. Phương thức này cung cấpstopReason
sau khi worker chạy. Việc này có thể giúp ích cho việc báo cáostopReason
theo cách hữu dụng, vì sau khi dừng một worker, ứng dụng có thể nhanh chóng bị tắt. (I21386) - Cho phép đặt Đồng hồ thông qua cấu hình và dùng để điều khiển trình tự thực thi của các kiểm thử Worker. (Ic586e)
- Phương thức
getStopReason()
đã được thêm vàoListenableWorker
để gợi ý lý do worker bị dừng. (I07060) - Thêm
WorkManagerTestInitHelper#closeWorkDatabase()
để tránh cảnh báo của Closeguard về tài nguyên bị rò rỉ. (Ia8d49)
Sửa lỗi
- Thêm khả năng bỏ qua
overrideNextScheduleTime
bằng cách sử dụngTestDriver
và khắc phục các vấn đề về khả năng kiểm thử. (Ic2905)
Phiên bản 2.9.0-alpha01
Ngày 7 tháng 6 năm 2023
Phát hành androidx.work:work-*:2.9.0-alpha01
. Phiên bản 2.9.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
- Khả năng quan sát thông qua
Flow
. Thay vìLiveData
, bạn hiện có thể quan sát tiến trình của Worker thông qua Flow quaWorkManager.getWorkInfosFlow
và các phương thức tương tự. - Lên lịch chính xác cho worker định kỳ thông qua
setNextScheduleTimeOverride
. Nhờ vậy, bạn có thể linh hoạt tính toán lịch biểu công việc định kỳ tiếp theo để triển khai các tính năng nâng cao như thời gian làm mới thích ứng, hành vi thử lại tuỳ chỉnh hoặc khiến nhân viên nguồn cấp tin tức chạy trước khi người dùng thức dậy mỗi sáng mà không bị trôi. Bạn nên sử dụngExistingPeriodicWorkPolicy.UPDATE
với các kỹ thuật này để tránh huỷ một worker đang chạy trong khi lên lịch cho worker tiếp theo. - Kiểm thử
WorkManager
bằng quy trình tạo trùng khớp luồng. Bạn có thể dùngExecutorsMode.PRESERVE_EXECUTORS
để duy trì các trình thực thi được đặt trongConfiguration
và để sử dụng luồng chính thực. - Các API coroutine như
CoroutineWorker
đã được chuyển từ cấu phần phần mềm bổ sungwork-runtime-ktx
sang cấu phần phần mềm chínhwork-runtime
.work-runtime-ktx
hiện trống.
Thay đổi về API
- Hàm khởi tạo của
WorkInfo
hiện đang ở chế độ công khai, có thể hữu ích khi kiểm thử. (Ia00b6, b/209145335) work-runtime-ktx
hiện trống,CoroutineWorker
và các tiện ích dành riêng cho kotlin khác hiện có trong cấu phần phần mềmwork-runtime
chính. (I71a9a)- Thêm phương thức
setNextScheduleTimeOverride
, cho phép cài đặt chính xác lịch biểu công việc định kỳ (I3b4da) - Đổi tên
getEarliestRunTimeMillis
thànhgetNextScheduleTimeMillis
. (I2bd7a) - Thông tin về thời gian chạy theo lịch tiếp theo được thêm vào
WorkInfo
. (I797e4) - Thông tin về độ trễ ban đầu và định kỳ sẽ được thêm vào
WorkInfo
. (I52f2f) - Thêm phương thức quan sát worker thông qua Flows thông qua các phương thức
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) - Thêm chú thích
@RequiresApi(...)
bị thiếu vào hàm khởi tạo và thuộc tính của Constraints. Các chú thích này hiện được căn chỉnh với các chú thích tương ứng trên phương thức setter trongConstraints.Builder
có trong các phiên bảnWorkManager
ban đầu. (I6d7d2) WorkManager
hiện có một giới hạn riêng cho các trình thực thi URI nội dung để cung cấp cho chúng các vị trí được đảm bảo trongJobScheduler
nhằm tránh việc thiếu các bản cập nhật nội dung trong tải cao. Bạn có thể định cấu hình giới hạn thông quaConfiguration.Builder.setContentUriTriggerWorkersLimit
. (Ic128f)- Các quy tắc ràng buộc được thêm vào
WorkInfo
. (I162c0)
Phiên bản 2.8
Phiên bản 2.8.1
Ngày 22 tháng 3 năm 2023
Phát hành androidx.work:work-*:2.8.1
. Phiên bản 2.8.1 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi ANR trong
RescheduleReceiver
trước đây không xử lý đúng cách hai thông báo truyền tin đồng thời. (b/236906724)
Phiên bản 2.8.0
Ngày 8 tháng 2 năm 2023
Phát hành androidx.work:work-*:2.8.0
. Phiên bản 2.8.0 bao gồm các thay đổi sau.
Các thay đổi quan trọng kể từ phiên bản 2.7.0
Tính năng mới
- Thêm tính năng cập nhật
WorkRequests
theo cách không xâm nhập, giúp giữ nguyên thời gian xếp hàng đợi ban đầu, tạo chuỗi, v.v. Hãy xem bài đăng chi tiết trên blog về tính năng này, cũng như javadocs choWorkManager.updateWork
vàExistingPeriodicWorkPolicy.UPDATE
để biết thêm chi tiết.
Các thay đổi về API
- Đã thêm
WorkManager.updateWork
để cập nhật công việc duy trì thời gian xếp hàng đợi và chuỗi của hàng đợi ban đầu. (I9a248, b/219446409) - Thêm
ExistingPeriodicWorkPolicy.UPDATE
. Chính sách này cho phép cập nhật một công việc định kỳ theo tên. Chính sách này tương tự nhưREPLACE
hiện có, nhưng ít xâm phạm hơn: nghĩa là không huỷ nếu trình thực thi đang chạy, đồng thời vẫn giữ nguyên thời gian chờ trong hàng đợi – độ trễ và khoảng thời gian ban đầu được tính từ thời gian chờ hàng đợi ban đầu, thay vì thời gian cập nhật. Ngừng sử dụngREPLACE
để giảm sự nhầm lẫn giữaREPLACE
vàUPDATE
vì chúng có tên rất giống nhau. Nếu vẫn muốn giữ lại ngữ nghĩa trước đó củaREPLACE
, bạn có thể sử dụngCANCEL_AND_REENQUEUE
mới được thêm vào, giống hệt vớiREPLACE
. (I985ed, b/219446409) - Thêm tính năng chặn các trường hợp ngoại lệ về lập lịch, cung cấp
Consumer<Throwable>
thông qua setSchedulingExceptionHandler) - Thêm tính năng cung cấp
Consumer<Throwable>
thông qua setInitializationExceptionHandler để xác định xem có vấn đề nào khi cố gắng khởi chạy WorkManager hay không. - Trình trợ giúp cùng dòng cho
OneTimeWorkRequest
vàPeriodicWorkRequest
đã được di chuyển từandroidx.work:work-runtime-ktx
sangandroidx.work:work-runtime
(I0010f, b/209145335) - Thêm các phương thức trợ giúp
WorkQuery.fromIds
,WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
,WorkQuery.fromTags
để tạoWorkQuery
trực tiếp. (b/199919736) (If48f2, b/199919736) - Thêm
getForegroundInfo
vàoWorker
. (Ic1ead) RxWorker
cho cả RxJava 2 và RxJava 3 hiện đều cósetForeground
trả vềCompletable
có thể dùng thay chosetForegroundInfoAsync
trả vềListenableFuture
RxWorker
cho cả RxJava 2 và RxJava 3 đều cógetForegroundInfo
trả vềSingle
có thể dùng thay chogetForegroundInfoAsync
trả vềListenableFuture
. (b/203851459)- Hiện có thể thiết lập các quy tắc ràng buộc trực tiếp thay vì sử dụng
Constraints.Builder
để thuận tiện cho người dùng Kotlin. (Idc390, b/137568653) - Thêm chức năng kiểm tra xem
WorkManager
đã được khởi tạo chưa. Ngoài ra, thêm APIgetConfiguration()
mới dành cho nhà phát triển thư viện để lấy cấu hình màWorkManager
được khởi chạy. (I6eff3, b/212300336)
Sửa lỗi
- Sửa lỗi với trình lập lịch biểu hoạt động tối ưu để khiến các trình thực thi không chạy ngay lập tức khi đang tải. (I9686b, b/248111307)
- Thêm
@RequiresPermission
vào các API yêu cầu cấp quyềnPOST_NOTIFICATIONS
trên SDK 33 trở lên. (Ie542e, b/238790278) - Truyền các phương thức huỷ bỏ trong
CoroutineScope
đếnListenableFuture
khi sử dụngsuspendCancellableCoroutine
.
Phiên bản 2.8.0-rc01
Ngày 7 tháng 12 năm 2022
Phát hành androidx.work:work-*:2.8.0-rc01
. Phiên bản 2.8.0-rc01 bao gồm các thay đổi sau.
Tính năng mới
- Không có tính năng mới nào trong bản phát hành này. Đây chủ yếu là phiên bản bump
Phiên bản 2.8.0-beta02
Ngày 9 tháng 11 năm 2022
Phát hành androidx.work:work-*:2.8.0-beta02
. Phiên bản 2.8.0-beta02 bao gồm các thay đổi sau.
Sửa lỗi
- Sửa phương thức
equals
trongWorkInfo
, trước đây không tính đến thông tin về thế hệ mới. (4977cc)
Phiên bản 2.8.0-beta01
Ngày 5 tháng 10 năm 2022
Phát hành androidx.work:work-*:2.8.0-beta01
. Phiên bản 2.8.0-beta01 bao gồm các thay đổi sau.
Sửa lỗi
- Sửa lỗi với trình lập lịch biểu hoạt động tối ưu để khiến các trình thực thi không chạy ngay lập tức khi đang tải. (I9686b, b/248111307)
Phiên bản 2.8.0-alpha04
Ngày 7 tháng 9 năm 2022
Phát hành androidx.work:work-*:2.8.0-alpha04
. Phiên bản 2.8.0-alpha04 bao gồm các thay đổi sau.
Các thay đổi về API
- Thêm
WorkerInfo.getGeneration()
vàWorkerParameters.getGeneration()
để trả về hoạt động tạo một trình thực thi. Một trình thực thi có nhiều thế hệ (nhiều lần được tạo) nếu được cập nhật quaWorkManager.updateWork
hoặcWorkManager.enqueueUniquePeriodicWork
bằngExistingPeriodicWorkPolicy.UPDATE
. Lưu ý là nếu trình thực thi đang chạy, thì có thể phương thức này sẽ trả về một thế hệ mới hơn thế hệ trình thực thi đang chạy nếu cập nhật trong quá trình thực thi của trình thực thi đó. (I665c5, b/219446409) (I128a9, b/219446409) - Thêm
InitializationExceptionHandler
– một Trình xử lý ngoại lệ dùng để xác định xem có vấn đề nào khi cố khởi chạyWorkManager
hay không. (I061de)
Phiên bản 2.8.0-alpha03
Ngày 10 tháng 8 năm 2022
Phát hành androidx.work:work-*:2.8.0-alpha03
. Phiên bản 2.8.0-alpha03 bao gồm các thay đổi sau.
Tính năng mới
- Chúng tôi đã thêm khả năng cập nhật
WorkRequests
theo cách không xâm nhập, giúp duy trì thời gian của hàng đợi ban đầu, tạo chuỗi, v.v. Vui lòng xemWorkManager.updateWork
vàExistingPeriodicWorkPolicy.UPDATE
để biết thêm thông tin chi tiết.
Các thay đổi về API
- Đã thêm
WorkManager.updateWork
để cập nhật công việc duy trì thời gian xếp hàng đợi và chuỗi của hàng đợi ban đầu. (I9a248, b/219446409) - Thêm
ExistingPeriodicWorkPolicy.UPDATE
. Chính sách này cho phép cập nhật một công việc định kỳ theo tên. Chính sách này tương tự nhưREPLACE
hiện có, nhưng ít xâm phạm hơn: nghĩa là không huỷ nếu trình thực thi đang chạy, đồng thời vẫn giữ nguyên thời gian chờ trong hàng đợi – độ trễ và khoảng thời gian ban đầu được tính từ thời gian chờ hàng đợi ban đầu, thay vì thời gian cập nhật. Ngừng sử dụngREPLACE
để giảm sự nhầm lẫn giữaREPLACE
vàUPDATE
vì chúng có tên rất giống nhau. Nếu vẫn muốn giữ lại ngữ nghĩa trước đó củaREPLACE
, bạn có thể sử dụngCANCEL_AND_REENQUEUE
mới được thêm vào, giống hệt vớiREPLACE
. (I985ed, b/219446409) - Thêm khả năng chặn các trường hợp ngoại lệ về lập lịch bằng cách xác định
SchedulingExceptionHandler
. (I033eb) - Trình trợ giúp cùng dòng cho
OneTimeWorkRequest
vàPeriodicWorkRequest
đã được di chuyển từandroidx.work:work-runtime-ktx
sangandroidx.work:work-runtime
(I0010f, b/209145335)
Sửa lỗi
- Thêm
@RequiresPermission
vào các API yêu cầu cấp quyền POST_NOTIFICATIONS trên SDK 33 trở lên. (Ie542e, b/238790278)
Phiên bản 2.8.0-alpha02
Ngày 6 tháng 4 năm 2022
androidx.work:work-*:2.8.0-alpha02
đã phát hành. Phiên bản 2.8.0-alpha02 bao gồm các thay đổi sau.
Các thay đổi về API
- Bạn hiện có thể thiết lập các quy tắc ràng buộc trực tiếp thay vì sử dụng Trình tạo (Builder) để thuận tiện cho người dùng Kotlin. (Idc390, b/137568653)
- Thêm chức năng kiểm tra xem
WorkManager
đã được khởi tạo chưa. Ngoài ra, thêm APIgetConfiguration()
mới dành cho nhà phát triển thư viện để lấy cấu hình màWorkManager
được khởi chạy. (I6eff3, b/212300336)
Phiên bản 2.8.0-alpha01
Ngày 12 tháng 1 năm 2022
Phát hành androidx.work:work-*:2.8.0-alpha01
. Phiên bản 2.8.0-alpha01 bao gồm các thay đổi sau.
Các thay đổi về API
- Thêm các phương thức trợ giúp
WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
,WorkQuery.fromTags
để tạo WorkQuery trực tiếp. (If48f2, b/199919736) - Thêm các phương thức BuildCompat thử nghiệm cho các SDK trong tương lai (Iafd82, b/207528937)
- Thêm
getForegroundInfo
vàoWorker
. (Ic1ead) - Thêm các phương thức trợ giúp
WorkQuery.fromIds
để tạo WorkQuery trực tiếp từ các giá trị nhận dạng. (Ie5bdf, b/199919736) - RxWorker hiện có
setForeground
(trả vềCompletable
) có thể được sử dụng thay vìsetForegroundInfoAsync
(trả vềListenableFuture
). (I85156) - RxWorker dành cho RxJava 2 nay có
getForegroundInfo
trả vềSingle
có thể được sử dụng thay vìgetForegroundInfoAsync
(trả vềListenableFuture
). (I21c91, b/203851459) - RxWorker dành cho RxJava 3 nay có
getForegroundInfo
trả vềSingle
có thể được sử dụng thay vìgetForegroundInfoAsync
(trả vềListenableFuture
). (I1ca8a) - RxWorker hiện có
setForeground
(trả vềCompletable
) có thể được sử dụng thay vìsetForegroundInfoAsync
(trả vềListenableFuture
). (I992a3, b/203851459)
Sửa lỗi
- Truyền các phương thức huỷ bỏ trong
CoroutineScope
đếnListenableFuture
khi sử dụngsuspendCancellableCoroutine
. (I77e63)
Phiên bản 2.7
Phiên bản 2.7.1
Ngày 17 tháng 11 năm 2021
Phát hànhandroidx.work:work-*:2.7.1
. Phiên bản 2.7.1 bao gồm các thay đổi sau.
Sửa lỗi
- Các phương thức huỷ bỏ trong
CoroutineScope
được truyền đếnListenableFuture
khi sử dụngsuspendCancellableCoroutine
. (I77e63) - Một ngoại lệ được gửi ngay lập tức khi các yêu cầu công việc bị trì hoãn được đánh dấu là ưu tiên. bef1762
Phiên bản 2.7.0
Ngày 13 tháng 10 năm 2021
Phát hành androidx.work:work-*:2.7.0
. Phiên bản 2.7.0 bao gồm các thay đổi sau.
Các thay đổi quan trọng kể từ phiên bản 2.6.0
WorkManager ra mắt một API
WorkRequest.Builder.setExpedited(...)
mới để giúp giải quyết hạn chế về Dịch vụ tiền cảnh trong Android 12.Khi sử dụng
setExpedited(...)
, WorkManager được uỷ quyền đối với các công việc ưu tiên trong JobScheduler bắt đầu từ Android 12, đồng thời vẫn cung cấp khả năng tương thích ngược trên các phiên bản Android trước bằng cách uỷ quyền cho một Dịch vụ trên nền trước.
Phiên bản 2.7.0-rc01
Ngày 29 tháng 9 năm 2021
Phát hành androidx.work:work-*:2.7.0-rc01
. Phiên bản 2.7.0-rc01 bao gồm các thay đổi sau.
Phiên bản này hoàn toàn giống với phiên bản androidx.work:work-*:2.7.0-beta01
.
Phiên bản 2.7.0-beta01
Ngày 1 tháng 9 năm 2021
Phát hành androidx.work:work-*:2.7.0-beta01
. Phiên bản 2.7.0-beta01 bao gồm các thay đổi sau.
Tính năng mới
- Giảm sự tranh chấp SQLite đa quá trình khi khởi chạy WorkManager.
Các thay đổi về API
- Xoá các API
@ExperimentalExpeditedWork
vì các API nền tảng cơ bản dành cho Android 12 (S) đều ổn định. (aosp/1792806)
Sửa lỗi
- Cung cấp một thông báo lỗi tốt hơn khi những trình thực thi (worker) ưu tiên không triển khai
getForegroundInfoAsync()
. (aosp/1809376)
Phiên bản 2.7.0-alpha05
Ngày 21 tháng 7 năm 2021
Phát hành androidx.work:work-*:2.7.0-alpha05
. Phiên bản 2.7.0-alpha05 bao gồm các thay đổi sau.
Bản phát hành này cũng chứa các phần sửa lỗi trong bản phát hành WorkManager 2.6.0-beta02
.
Phiên bản 2.7.0-alpha04
Ngày 2 tháng 6 năm 2021
Phát hành androidx.work:work-*:2.7.0-alpha04
.
Bản phát hành này cũng chứa các thay đổi từ bản phát hành 2.6.0-beta01.
Các thay đổi về API
ListenableWorker.setForegroundAsync()
đã được sử dụng trở lại.- Bạn nên sử dụng API
WorkRequest.Builder.setExpedited(...)
khi có thể. Để được hỗ trợ tốt hơn trong các trường hợp ứng dụng không phải tuân theo hạn chế về dịch vụ tiền cảnh, các nhà phát triển có thể sử dụng APIListenableWorker.setForegroundAsync()
. - Nếu
ListenableWorker.setForegroundAsync()
được gọi khi ứng dụng phải tuân thủ hạn chế về dịch vụ tiền cảnh, thao tác này sẽ gửi ForegroundServiceStartNotAllowedException.
Sửa lỗi
- Khi những công việc ưu tiên đã được lên lịch lại, những công việc này sẽ không còn được ưu tiên nữa. Những công việc này trở thành những công việc thông thường.
Phiên bản 2.7.0-alpha03
Ngày 21 tháng 4 năm 2021
Phát hành androidx.work:work-*:2.7.0-alpha03
. Phiên bản 2.7.0-alpha03 bao gồm các thay đổi sau.
Tính năng mới
Từ WorkManager
2.6.0-alpha02
: Thêm tính năng hỗ trợ cho các Trình thực thi (Worker) để có thể chạy trong bất kỳ quá trình nào. (Iaf200)Từ WorkManager
2.6.0-alpha02
: Thêm mộtRemoteCoroutineWorker
. Đây là phương thức triển khai củaRemoteListenableWorker
có thể liên kết với một quá trình từ xa. (I30578)
Các thay đổi về API
- Từ WorkManager
2.6.0-alpha02
: Thêm tính năng hỗ trợ cho quy tắc hạn chế mạng củaTEMPORARILY_UNMETERED
. (I08d5e) - Từ WorkManager
2.6.0-alpha02
: Hỗ trợ trình thực thi đa quá trình dành chosetProgressAsync()
. (Ib6d08) - Từ WorkManager
2.6.0-alpha02
: ChuyểnWorkManagerInitializer
trở thành công khai để cácandroidx.startup.Initializer
khác có thể sử dụng các chế độ cài đặt này làm phần phụ thuộc. (I5ab11)
Phiên bản 2.7.0-alpha02
Ngày 10 tháng 3 năm 2021
Phát hành androidx.work:work-*:2.7.0-alpha02
. Phiên bản 2.7.0-alpha02 bao gồm các thay đổi sau.
Sửa lỗi
- Làm cho
PendingIntent
có thể thay đổi một cách rõ ràng để khắc phục sự cố khi nhắm mục tiêu Android 12. (b/180884673)
Phiên bản 2.7.0-alpha01
Ngày 18 tháng 2 năm 2021
Phát hành androidx.work:work-*:2.7.0-alpha01
. Phiên bản 2.7.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
WorkManager ra mắt một API
WorkRequest.Builder.setExpedited(...)
mới để giúp giải quyết hạn chế về dịch vụ tiền cảnh trong Android 12.Các ứng dụng không thể chạy dịch vụ trên nền trước khi đang chạy trong nền nữa. Do đó, để hỗ trợ tốt hơn cho công việc lâu dài mà trước đây liên quan đến vòng đời của dịch vụ trên nền trước, các ứng dụng có thể đánh dấu các
WorkRequest
là ưu tiên.API này thay thế cho các API
setForegroundAsync(...)
/setForeground(...)
nay không dùng nữa.Khi sử dụng
setExpedited(...)
, WorkManager được uỷ quyền đối với các công việc ưu tiên trongJobScheduler
bắt đầu từ Android 12, đồng thời vẫn cung cấp khả năng tương thích ngược trên các phiên bản Android trước bằng cách uỷ quyền cho các dịch vụ trên nền trước,
Các thay đổi về API
- Thêm tính năng hỗ trợ cho các
WorkRequest
ưu tiên.
Phiên bản 2.6.0
Phiên bản 2.6.0
Ngày 1 tháng 9 năm 2021
Phát hành androidx.work:work-*:2.6.0
. Phiên bản 2.6.0 bao gồm các thay đổi sau.
Các thay đổi quan trọng kể từ phiên bản 2.5.0
WorkManager hiện sử dụng
androidx.startup
để khởi chạy WorkManager. Nếu từng sử dụngtools:node="remove"
trênContentProvider
đang dùng để khởi chạy WorkManager trước đây, thì bạn cần thao tác như sau.<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" />
Thêm tính năng hỗ trợ cho các Trình thực thi (Worker) để có thể chạy trong bất kỳ quá trình nào. (Iaf200)
Thêm một
RemoteCoroutineWorker
. Đây là phương thức triển khai RemoteListenableWorker có thể liên kết với một quá trình từ xa. (I30578)
Phiên bản 2.6.0-rc01
Ngày 4 tháng 8 năm 2021
Phát hành androidx.work:work-*:2.6.0-rc01
. Phiên bản 2.6.0-rc01 bao gồm các thay đổi sau.
Phiên bản này hoàn toàn giống với phiên bản androidx.work:work-*:2.6.0-beta02
.
Phiên bản 2.6.0-beta02
Ngày 21 tháng 7 năm 2021
Phát hành androidx.work:work-*:2.6.0-beta02
. Phiên bản 2.6.0-beta02 bao gồm các thay đổi sau.
Sửa lỗi
RemoteWorkManager
nay huỷ liên kết đúng cách vớiRemoteWorkManagerService
, cho phépRemoteWorkManagerService
dọn dẹp tài nguyên đúng cách. aosp/1730694RemoteListenableWorker
nay huỷ liên kết đúng cách vớiRemoteWorkerService
, cho phépRemoteWorkerService
dọn dẹp tài nguyên đúng cách. aosp/1743817ForceStopRunnable
hiện chỉ chạy trong tiến trình ứng dụng chính. Đây là quá trình tối ưu hoá và tránh tranh chấp tài nguyên cho các ứng dụng sử dụng nhiều quá trình. aosp/1749180, aosp/1761729
Phiên bản 2.6.0-beta01
Ngày 2 tháng 6 năm 2021
Phát hành androidx.work:work-*:2.6.0-beta01
. Phiên bản 2.6.0-beta01 bao gồm các thay đổi sau.
Bản phát hành này có một số cải tiến nhỏ về tài liệu. Bản phát hành này có sự tương đồng lớn với bản phát hành 2.6.0-alpha02.
Phiên bản 2.6.0-alpha02
Ngày 21 tháng 4 năm 2021
Phát hành androidx.work:work-*:2.6.0-alpha02
. Phiên bản 2.6.0-alpha02 bao gồm các thay đổi sau.
Tính năng mới
Thêm tính năng hỗ trợ cho các Trình thực thi (Worker) để có thể chạy trong bất kỳ quá trình nào. (Iaf200)
Thêm một
RemoteCoroutineWorker
, đây là phương thức triển khaiRemoteListenableWorker
có thể liên kết với một quá trình từ xa. (I30578)
Các thay đổi về API
- Thêm tính năng hỗ trợ cho quy tắc hạn chế mạng của
TEMPORARILY_UNMETERED
. (I08d5e) - Hỗ trợ trình thực thi đa quá trình dành cho
setProgressAsync()
. (Ib6d08) - Chuyển
WorkManagerInitializer
sang chế độ công khai để cácandroidx.startup.Initializer
khác có thể sử dụng những phần này làm phần phụ thuộc. (I5ab11)
Phiên bản 2.6.0-alpha01
Ngày 24 tháng 3 năm 2021
Phát hành androidx.work:work-*:2.6.0-alpha01
. Phiên bản 2.6.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
WorkManager
nay sử dụngandroidx.startup
để khởi chạy WorkManager. Trước đây, việc này đượcandroidx.work.impl.WorkManagerInitializer
thực hiện. (aosp/1608813)Nếu từng sử dụng
tools:node="remove"
trênContentProvider
đang dùng để khởi tạo vòng đời xử lý trước đây, thì bạn cần thao tác như sau.<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>
(hoặc)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Các thay đổi về API
- Thêm một API
Result.getOutputData()
sẽ trả vềoutputData
của ListenableWorker. (Ie51e3)
Sửa lỗi
- Thêm phương án giải quyết lỗi OEM khiến
SecurityException
được gửi khi sử dụng APIAlarmManager
. (aosp/1587518)
Phiên bản 2.5.0
Phiên bản 2.5.0
Ngày 27 tháng 1 năm 2021
Phát hành androidx.work:work-*:2.5.0
. Phiên bản 2.5.0 bao gồm các thay đổi sau.
Những thay đổi lớn kể từ phiên bản 2.4.0
- Cấu phần phần mềm
:work:work-multiprocess
mới của các ứng dụng sử dụng nhiều quá trình. Cấu phần phần mềm mới này giúp tăng hiệu suất bằng cách hợp nhất việc lập lịch yêu cầu công việc vào một quá trình.- Để sử dụng
work-multiprocess
, bạn hãy khai báo một phần phụ thuộc trên:implementation "androidx.work:work-multiprocess:2.5.0"
- Chỉ định một quá trình chính bằng cách sử dụng Configuration.Builder.setDefaultProcessName(String).
- Khi sử dụng
work-multiprocess
, bạn cũng cần sử dụng RemoteWorkManager để quản lý cácWorkRequest
của mình. RemoteWorkManager luôn tiếp cận với quá trình được chỉ định. Trình lập lịch biểu trong quá trình (in-process scheduler) cũng chạy trong quá trình được chỉ định.
- Để sử dụng
- Đôi khi,
ActivityManager
không thể tạo bản sao thực thểJobService
để bắt đầu một công việc. Điều này khiến công việc cơ bản bị âm thầm bỏ qua vì lỗi nền tảng.WorkManager
hiện đảm bảo rằng mỗiWorkRequest
chỉ có một công việc sao lưu (backing job) khi mộtApplication
đang được khởi chạy bởi các công việc điều chỉnh (reconciling job). Điều này giúp cải thiện đáng kể độ tin cậy khi thực hiện công việc. (b/172475041, aosp/1489577) WorkManager
giới hạn sự phát triển của cơ sở dữ liệu bằng cách giảm thời lượng lưu vào bộ đệm để cácWorkRequest
được theo dõi sau khi mộtWorkRequest
hoàn tất. Trước đó, thời lượng lưu vào bộ đệm là7
ngày. Thời lượng đã giảm xuống còn1
ngày + thời lượng của keepResultsForAtLeast. (aosp/1419708)TestListenableWorkerBuilder
hiện hỗ trợ lớpListenableWorker
được sửa đổi mở rộng để việc kiểm thử trở nên dễ dàng hơn. (aosp/1443299, b/169787349)- Bạn hiện có thể sử dụng công cụ kiểm tra WorkManager khi dùng Android Studio Arctic Fox.
Phiên bản 2.5.0-rc01
Ngày 13 tháng 1 năm 2021
Phát hành androidx.work:work-*:2.5.0-rc01
. Phiên bản 2.5.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
- Sửa lỗi
getWorkInfosLiveData
không được vô hiệu hoá đúng cách khỏi các thực thể sau khi các thực thể được cập nhật khi sử dụng API dựa trênWorkQuery
. (aosp/1540566, b/173769028) - Sửa lỗi các giao dịch cơ sở dữ liệu không được đánh dấu là thành công trong một số ít trường hợp. Lỗi này gây ra nhiều vấn đề trên một số thiết bị Motorola. (aosp/1535368, b/175944460)
- Sửa lỗi để bỏ qua các
NoSuchElementException
khi cố huỷ liên kết khỏi quá trình không phản hồi. (aosp/1530589) - Cải tiến
ConstraintTrackingWorker
để chỉ dừng mộtListenableWorker
nếu trước đó chưa bị ngừng. (aosp/1496844, b/172946965) - Cập nhật các thư viện androidx.work để nhắm mục tiêu Java 8 (Ibd2f2)
Phiên bản 2.5.0-beta02
Ngày 2 tháng 12 năm 2020
Phát hành androidx.work:work-*:2.5.0-beta02
. Phiên bản 2.5.0-beta02 bao gồm các thay đổi sau.
Sửa lỗi
- Sửa lỗi trong
androidx.work:work-multiprocess
, trong đó WorkManager vô tình chặn luồng (thread) đang gọi khi cố gắng liên kết với quá trình được chỉ định. (aosp/1475538) - Khắc phục lỗi
PeriodicWorkRequest
không được điều chỉnh chính xác. (b/172475041, aosp/1489577) - Thêm một phương án khắc phục lỗi nền tảng xảy ra khi dừng dịch vụ trên nền trước trong khi sử dụng các API
setForeground*
. (b/170924044, aosp/1489901)
Phiên bản 2.5.0-beta01
Ngày 28 tháng 10 năm 2020
Phát hành androidx.work:work-*:2.5.0-beta01
. Phiên bản 2.5.0-beta01 bao gồm các thay đổi sau.
Tính năng mới
WorkManager
tự động điều tiết số lượngWorkRequest
mà trình lập lịch biểu trong quá trình (in-process scheduler) có thể nhận. Các yêu cầu vẫn được thực thi theo thứ tự FIFO. (aosp/1455228)WorkManager
cố gắng khôi phục khi kho dữ liệu của ứng dụng ở trạng thái xấu. (aosp/1463103)
Sửa lỗi
- Khi bị gián đoạn, các
ListenableWorker
ngay lập tức được đánh dấu làENQUEUED
để có thể lên lịch lại sau đó. (aosp/1455618, b/170273988)
Phiên bản 2.5.0-alpha03
Ngày 14 tháng 10 năm 2020
Phát hành androidx.work:work-*:2.5.0-alpha03
. Phiên bản 2.5.0-alpha03 bao gồm các thay đổi sau.
Các thay đổi về API
TestListenableWorkerBuilder
vàTestWorkerBuilder
không dùng các kiểu thô (raw types). (I883ad, b/169787349)
Sửa lỗi
- Sử dụng
ApplicationInfo
để xác định tên của quá trình ứng dụng mặc định. (b/168716641, aosp/1429950) - Sửa các quy tắc hiển thị cho
RemoteWorkManager
vàRemoteWorkContinuation
. Các API này không còn được đánh dấu là@Restricted
nữa. (aosp/1432091) - Sửa các quy tắc Proguard cho
:work:work-multiprocess
. (aosp/1432091) - Cải tiến vòng đời thông báo của công việc lâu dài liên quan đến dịch vụ trên nền trước. (b/168502234, aosp/1431331)
Phiên bản 2.5.0-alpha02
Ngày 16 tháng 9 năm 2020
Phát hành androidx.work:work-*:2.5.0-alpha02
. Phiên bản 2.5.0-alpha02 bao gồm các thay đổi sau.
Tính năng mới
- Thêm một API vào WorkQuery để có thể sử dụng các
id
nhằm truy vấn cácWorkInfo
. (aosp/1412372, b/157335295) - WorkManager ra mắt một cấu phần phần mềm mới (
androidx.work:work-multiprocess:*
) nhằm hỗ trợ tốt hơn cho những ứng dụng sử dụng nhiều quá trình. Cấu phần phần mềm mới này giúp giải quyết một số vấn đề mà các ứng dụng lớn gặp phải, bao gồm:- WorkManager thường cần được khởi chạy trong mọi quá trình ứng dụng. Điều này không phải là tốt vì có sự tranh chấp SQLite ngày càng tăng, từ đó gây ra các vấn đề khác. WorkManager hiện có các API mới có thể dùng để chỉ định quá trình ứng dụng chính bằng
Configuration#setDefaultProcessName(processName)
.processName
là tên quá trình đủ điều kiện và có dạngpackageName:processName
(chẳng hạn nhưcom.example:remote
). - Một tập hợp các API mới:
RemoteWorkManager
vàRemoteWorkContinuation
đểenqueue
,cancel
vàquery
các yêu cầu công việc. Các API này không bao gồmLiveData
các biến thể để tránh tranh chấp SQLite trên nhiều quá trình. Tất cả lệnh gọi đếnenqueue
,cancel
vàquery
đều được chuyển tiếp đến một quá trình ứng dụngprimary
bằng AIDL và trả vềListenableFuture
thông suốt. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- WorkManager thường cần được khởi chạy trong mọi quá trình ứng dụng. Điều này không phải là tốt vì có sự tranh chấp SQLite ngày càng tăng, từ đó gây ra các vấn đề khác. WorkManager hiện có các API mới có thể dùng để chỉ định quá trình ứng dụng chính bằng
Các thay đổi về API
- WorkManager hiện sẽ lược bớt các
WorkRequest
đã hoàn thành không có phần phụ thuộc chưa hoàn thiện nào một cách mạnh mẽ hơn. Thay đổi thời lượng vùng đệm từ7
ngày thành1
ngày. (aosp/1419708)
Sửa lỗi
- WorkManager hiện điều chỉnh công việc một cách chủ động để
WorkRequest
vàJobScheduler
của các công việc được đồng bộ hoá khiWorkManager
được khởi chạy. (aosp/1412794, b/166292069)
Phiên bản 2.5.0-alpha01
Ngày 19 tháng 8 năm 2020
Phát hành androidx.work:work-*:2.5.0-alpha01
. Phiên bản 2.5.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
- Các thay đổi đối với các API nội bộ cho phép chúng tôi cung cấp công cụ tốt hơn với
WorkManager
trong tương lai. Hãy chú ý theo dõi thông tin cập nhật bổ sung.
Sửa lỗi
- Xử lý các
SecurityException
khi theo dõi trạng thái mạng trên một số thiết bị. (aosp/1396969)
Đóng góp bên ngoài
- Sửa tài liệu của
ArrayCreatingInputMerger
thực hiện bởi Zac Sweers (github/43).
Phiên bản 2.4.0
Phiên bản 2.4.0
Ngày 22 tháng 7 năm 2020
Phát hành androidx.work:work-*:2.4.0
. Phiên bản 2.4.0 bao gồm các thay đổi sau.
Các thay đổi lớn kể từ phiên bản 2.3.0
- Trình lập lịch biểu trong quá trình của các
WorkManager
nay có năng lực tốt hơn. Trước đây,Scheduler
trong quá trình sẽ chỉ xem xét thực hiện các công việc không bị trì hoãn và đáp ứng các quy tắc ràng buộc. Hiện tại, trình lập lịch biểu trong quá trình theo dõi cácWorkRequest
có thể được thực thi trong tương lai, bao gồm cả các PeriodicWorkRequest.Scheduler
trong quá trình cũng không tuân thủ các giới hạn về lập lịch (nhưng vẫn bị hạn chế ở kích thước củaExecutor
do WorkManager sử dụng). Điều này có nghĩa là ứng dụng nay có thể thực thi nhiều WorkRequest hơn khi đang ở trong nền trước. Để quản lý việc thực thi công việc bị trì hoãn trong nền trước,WorkManager
cũng ra mắtRunnableScheduler
có thể định cấu hình mới. (aosp/1185778) - WorkManager nay hỗ trợ RxJava 3. Để dùng RxJava 3, bạn nên sử dụng phần phụ thuộc sau:
implementation "androidx.work:work-rxjava3:2.4.0"
. (aosp/1277904) - Thêm chức năng truy vấn cho các
WorkInfo
bằng cách sử dụng mộtWorkQuery
. Điều này hữu ích khi các nhà phát triển muốn truy vấn cácWorkInfo
bằng cách kết hợp nhiều thuộc tính. Để biết thêm thông tin, hãy xemWorkQuery.Builder.fromStates(...)
,WorkQuery.Builder. fromTags(...)
hoặcWorkQuery.Builder.fromUniqueWorkNames(...)
. (aosp/1253230, b/143847546) Thêm khả năng yêu cầu thông tin chẩn đoán từ
WorkManager
bằng cách sử dụng:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
Điều này cung cấp nhiều thông tin hữu ích bao gồm:
- Các WorkRequest (yêu cầu công việc) đã được hoàn thành trong 24 giờ qua.
- Các WorkRequest (yêu cầu công việc) nay đang CHẠY.
- Các WorkRequest (yêu cầu công việc) đã lên lịch. (aosp/1235501)
Thêm
ExistingWorkPolicy.APPEND_OR_REPLACE
tương tự nhưAPPEND
, nhưng thay thế một chuỗi đã huỷ hoặc không đáp ứng được các điều kiện tiên quyết. (b/134613984, aosp/1199640)Cho phép thêm một
RunnableScheduler
tuỳ chỉnh để theo dõi các WorkRequest cần được thực thi trong tương lai. Thành phần này được sử dụng bởi trình lập lịch biểu trong quá trình. (aosp/1203944)Thêm tính năng hỗ trợ cho việc linh động thêm các nhà máy để uỷ quyền khi sử dụng
DelegatingWorkerFactory
. (b/156289105, aosp/1309745)Điều chỉnh hoạt động theo dõi các quy tắc ràng buộc của
BATTERY_NOT_LOW
để gắn bó chặt chẽ với nền tảng hơn. (aosp/1312583)Trình lập lịch biểu trong quá trình hiện sử dụng các API tốt hơn để xác định tên của quá trình. Điều này sẽ hữu ích trong việc hỗ trợ tốt hơn cho những ứng dụng sử dụng nhiều quá trình. (aosp/1324732)
Các quy tắc Lint (tìm lỗi mã nguồn) mới thực thi:
- Sử dụng đúng
foregroundServiceType
khi sử dụng các APIsetForegroundAsync()
. (b/147873061, aosp/1215915) - Chỉ định các giá trị nhận dạng JobScheduler mà WorkManager nên dùng khi sử dụng trực tiếp các API JobService. aosp/1223567
- Thêm quy tắc Lint (tìm lỗi mã nguồn) mới để đảm bảo rằng các phương thức triển khai
ListenableWorker
nay làpublic
khi sử dụngWorkerFactory
mặc định. (aosp/1291262)
- Sử dụng đúng
Các lệnh gọi đến
setForegroundAsync()
không hoàn tất trước khi hoàn tất mộtListenableWorker
sẽ được báo hiệu quaIllegalStateException
vàoListenableFuture
được trả về. (aosp/1262743)Khắc phục lỗi
ForegroundService
không bị dừng sau khi mộtWorker
ở nền trước bị gián đoạn. (b/155579898, aosp/1302153)Sửa lỗi
WorkManager
cố thực thi nhiều thực thể của mộtWorker
liên kết với một Dịch vụ trên nền trước (b/156310133, aosp/1309853)
Phiên bản 2.4.0-rc01
Ngày 24 tháng 6 năm 2020
Phát hành androidx.work:work-*:2.4.0-rc01
. Phiên bản 2.4.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
- Trình lập lịch biểu trong quá trình hiện sử dụng các API tốt hơn để xác định tên của quá trình. Điều này sẽ hữu ích trong việc hỗ trợ tốt hơn cho những ứng dụng sử dụng nhiều quá trình. (aosp/1324732)
Phiên bản 2.4.0-beta01
Ngày 20 tháng 5 năm 2020
Phát hành 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
và androidx.work:work-testing:2.4.0-beta01
. Phiên bản 2.4.0-beta01 bao gồm các thay đổi sau.
Sửa lỗi
- Sửa lỗi
ForegroundService
không bị dừng sau khi mộtWorker
ở nền trước bị gián đoạn. (b/155579898, aosp/1302153) - Sửa lỗi
WorkManager
cố thực thi nhiều thực thể của mộtWorker
liên kết với một Dịch vụ trên nền trước (b/156310133, aosp/1309853) - Thêm tính năng hỗ trợ cho việc linh động thêm các nhà máy để uỷ quyền khi sử dụng
DelegatingWorkerFactory
. (b/156289105, aosp/1309745) - Điều chỉnh hoạt động theo dõi các quy tắc ràng buộc của
BATTERY_NOT_LOW
để gắn bó chặt chẽ với nền tảng hơn. (aosp/1312583)
Phiên bản 2.4.0-alpha03
Ngày 29 tháng 4 năm 2020
Phát hành androidx.work:work-*:2.4.0-alpha03
. Phiên bản 2.4.0-alpha03 bao gồm các thay đổi sau.
Tính năng mới
- WorkManager nay hỗ trợ RxJava 3. Để dùng RxJava 3, bạn nên sử dụng phần phụ thuộc sau:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"
. (aosp/1277904) - Thêm quy tắc Lint (tìm lỗi mã nguồn) mới để đảm bảo rằng các phương thức triển khai
ListenableWorker
nay làpublic
khi sử dụngWorkerFactory
mặc định. (aosp/1291262)
Các thay đổi về API
- Hiện tại, việc gọi
setProgressAsync()
sau khiListenableWorker
đã hoàn tất quá trình thực thi sẽ báo hiệu mộtException
thông quaListenableFuture
. (aosp/1285494) WorkQuery.Builder
hiện được đánh dấu làfinal
. (aosp/1275037)- Các phương thức nhà máy của
WorkQuery.Builder
làwithStates
,withTags
vàwithUniqueWorkNames
đã được đổi tên lần lượt thànhfromStates
,fromTags
vàfromUniqueWorkNames
. (aosp/1280287)
Sửa lỗi
- Bỏ qua các
SecurityException
khi theo dõi trạng thái mạng của thiết bị. (b/153246136, aosp/1280813)
Phiên bản 2.4.0-alpha02
Ngày 1 tháng 4 năm 2020
Phát hành androidx.work:work-*:2.4.0-alpha02
. Phiên bản 2.4.0-alpha02 bao gồm các thay đổi sau.
Tính năng mới
- Thêm quy tắc Lint (tìm lỗi mã nguồn) mới cảnh báo khi các
WorkRequest
yêu cầu cảConstraints.setRequiresCharging(...)
vàConstraints.setRequiresDeviceIdle(...)
. Một số thiết bị không bao giờ chuyển sang trạng thái rảnh (idle) khi sạc. Vì vậy, các yêu cầu như vậy sẽ chạy ít xảy ra thường xuyên hơn dự kiến. (aosp/1253840)
Các thay đổi về API
Thêm chức năng truy vấn cho các
WorkInfo
bằng cách sử dụng mộtWorkQuery
. Điều này hữu ích khi các nhà phát triển muốn truy vấn cácWorkInfo
bằng cách kết hợp nhiều thuộc tính. Để biết thêm thông tin, hãy xemWorkQuery.Builder withStates(...)
,WorkQuery.Builder withTags(...)
hoặcWorkQuery.Builder withUniqueWorkNames(...)
. (aosp/1253230, b/143847546)Các lệnh gọi đến
setForegroundAsync()
không hoàn tất trước khi hoàn tất mộtListenableWorker
sẽ được báo hiệu quaIllegalStateException
vàoListenableFuture
được trả về. (aosp/1262743)
Sửa lỗi
- Sửa quy tắc Lint (tìm lỗi mã nguồn) kiểm tra các khoảng thời gian không hợp lệ cho
PeriodicWorkRequest
. (aosp/1254846, b/152606442)
Phiên bản 2.4.0-alpha01
Ngày 4 tháng 3 năm 2020
Phát hành androidx.work:work-*:2.4.0-alpha01
. Phiên bản 2.4.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
Trình lập lịch biểu trong quá trình của các
WorkManager
nay có năng lực tốt hơn. Trước đây, trình lập lịch biểu trong quá trình (in-process Scheduler) sẽ chỉ xem xét thực hiện các công việc không bị trì hoãn và đáp ứng các quy tắc ràng buộc. Hiện tại, trình lập lịch biểu trong quá trình theo dõi cácWorkRequest
có thể được thực thi trong tương lai, bao gồm cả cácPeriodicWorkRequest
. Trình lập lịch biểu trong quá trình cũng không tuân thủ các giới hạn về lập lịch (nhưng vẫn bị hạn chế ở kích thước củaExecutor
mà WorkManager đang sử dụng). Điều này có nghĩa là ứng dụng nay có thể thực thi nhiềuWorkRequest
hơn khi chạy trong nền trước. (aosp/1185778)Thêm chức năng yêu cầu thông tin chẩn đoán từ WorkManager bằng cách sử dụng
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
. Điều này cung cấp nhiều thông tin hữu ích bao gồm:- Các WorkRequest (yêu cầu công việc) đã được hoàn thành trong 24 giờ qua.
- Các WorkRequest (yêu cầu công việc) nay đang CHẠY.
- Các WorkRequest (yêu cầu công việc) đã lên lịch. (aosp/1235501)
Các quy tắc Lint (tìm lỗi mã nguồn) mới thực thi:
- Sử dụng đúng
foregroundServiceType
khi sử dụng các APIsetForegroundAsync()
. (b/147873061, aosp/1215915) - Chỉ định các giá trị nhận dạng
JobScheduler
màWorkManager
nên dùng khi sử dụng trực tiếp các APIJobService
. (aosp/1223567)
- Sử dụng đúng
Các thay đổi về API
Thêm
ExistingWorkPolicy.APPEND_OR_REPLACE
tương tự nhưAPPEND
, nhưng thay thế một chuỗi đã huỷ hoặc không đáp ứng được các điều kiện tiên quyết. (b/134613984, aosp/1199640)Cho phép thêm một
RunnableScheduler
tuỳ chỉnh để theo dõi cácWorkRequest
cần được thực thi trong tương lai. Thành phần này được sử dụng bởi trình lập lịch biểu trong quá trình. (aosp/1203944)
Sửa lỗi
- Ngừng sử dụng
setProgress()
trongRxWorker
vì trước đó đã trả vềSingle<Void>
là một kiểu không thể thực thi. Thay vào đó, thêm một APIsetCompletableProgress()
mới trả vềCompletable
; và thêm các quy tắc Lint (tìm lỗi mã nguồn) mới để giúp chuyển sang các API mới. (b/150080946, aosp/1242665)
Phiên bản 2.3.4
Phiên bản 2.3.4
Ngày 18 tháng 3 năm 2020
Phát hành androidx.work:work-*:2.3.4
. Phiên bản 2.3.4 bao gồm các thay đổi sau.
Sửa lỗi
- Sửa lỗi khiến nhiều thực thể của các
Worker
lâu dài vẫn chạy sau khi vượt quá thời hạn thực thi 10 phút. (aosp/1247484, b/150553353) - Khắc phục lỗi
IssueRegistry
tìm lỗi mã nguồn của WorkManager. Xin cảm ơn @ZacSweers từ Slack, vì những đóng góp này. (aosp/1217923)
Phiên bản 2.3.3
Phiên bản 2.3.3
Ngày 4 tháng 3 năm 2020
Phát hành androidx.work:work-*:2.3.3
. Phiên bản 2.3.3 bao gồm các thay đổi sau.
Sửa lỗi
- Sửa lỗi khi
Worker
bị gián đoạn thì sẽ không được lên lịch lại đúng cách. (b/150325687, aosp/1246571)
Phiên bản 2.3.2
Phiên bản 2.3.2
Ngày 19 tháng 2 năm 2020
Phát hành androidx.work:work-*:2.3.2
. Phiên bản 2.3.2 bao gồm các thay đổi sau.
Sửa lỗi
- Sửa lỗi WorkManager vượt quá giới hạn 100 công việc trong JobScheduler (ở một số rất ít trường hợp). (aosp/1226859, b/149092520)
- Khắc phục một điều kiện tương tranh (race condition) trong ConstraintControllers. (aosp/1220100)
- Cải tiến phương thức quản lý vòng đời dịch vụ trên nền trước cho các Trình thực thi (Worker) lâu dài. (aosp/1226295)
- Cải tiến việc quản lý phương thức huỷ bỏ các Thông báo (Notifications) của các Trình thực thi (Worker) lâu dài trên phương thức huỷ bỏ trình thực thi. (aosp/1228346)
Phiên bản 2.3.1
Phiên bản 2.3.1
Ngày 5 tháng 2 năm 2020
Phát hành androidx.work:work-*:2.3.1
. Phiên bản 2.3.1 bao gồm các thay đổi sau.
Sửa lỗi
- Quản lý tốt hơn vòng đời của các
Notification
dành cho cácWorker
lâu dài khiService
trên nền trước hoạt động. (aosp/1218539, b/147249312) WorkManager
nay tuỳ thuộc vàoandroidx.sqlite:sqlite-framework:2.1.0
ổn định. (aosp/1217729)- Thêm các quy tắc Lint (tìm lỗi mã nguồn) để đảm bảo rằng một
foregroundServiceType
được chỉ định trongAndroidManifest.xml
khi sử dụng cácforegroundServiceType
trongForegroundInfo
. (aosp/1214207, b/147873061)
Phiên bản 2.3.0
Phiên bản 2.3.0
Ngày 22 tháng 1 năm 2020
Phát hành androidx.work:work-*:2.3.0
và không có thay đổi nào kể từ 2.3.0-rc01
. Phiên bản 2.3.0 bao gồm các thay đổi sau.
Các thay đổi quan trọng kể từ phiên bản 2.2.0
- Hỗ trợ các công việc lâu dài hoặc công việc quan trọng thông qua
ListenableWorker#setForegroundAsync()
. - Hỗ trợ đối với Tến độ (Progress) của Trình thực thi (Worker) thông qua
ListenableWorker#setProgressAsync()
. - WorkManager hiện đóng gói các quy tắc Lint (tìm lỗi mã nguồn) bổ sung vào thư viện để giúp phát hiện sớm các lỗi.
Phiên bản 2.3.0-rc01
Ngày 8 tháng 1 năm 2020
Phát hành androidx.work:work-*:2.3.0-rc01
. Phiên bản 2.3.0-rc01 bao gồm các thay đổi sau.
Bản phát hành này hoàn toàn giống với phiên bản 2.3.0-beta02
Sửa lỗi
- Cấu phần phần mềm
work-testing
hiện khai báo một phần phụ thuộcapi
trênwork-runtime-ktx
. (aosp/1194410)
Phiên bản 2.3.0-beta02
Ngày 18 tháng 12 năm 2019
Phát hành androidx.work:work-*:2.3.0-beta02
. Phiên bản 2.3.0-beta02 bao gồm các thay đổi sau.
Tính năng mới
- Thêm thông báo lỗi tốt hơn đối với các ngoại lệ SQLite không thể khôi phục. (aosp/1185777)
- Thêm một quy tắc Lint (tìm lỗi mã nguồn) đảm bảo rằng nhà cung cấp nội dung
androidx.work.impl.WorkManagerInitializer
sẽ bị xoá khỏiAndroidManifest.xml
khi sử dụng phương thức khởi chạy theo yêu cầu (on demand initialization). (aosp/1167007) - Thêm cảnh báo Lint (tìm lỗi mã nguồn) khi sử dụng
enqueue()
choPeriodicWorkRequest
thay vìenqueueUniquePeriodicWork()
. (aosp/1166032)
Các thay đổi về API
- Hiện tại,
ForegroundInfo
yêu cầu bạn chỉ địnhnotificationId
để sử dụng khi đang sử dụngListenableWorker.setForegroundAsync()
. Đây là một thay đổi có thể gây lỗi. Điều này cho phép bạn chạy song song nhiềuWorker
lâu dài.WorkManager
cũng quản lý tốt hơn thời gian hoạt động của cácNotification
được cung cấp. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
Sửa lỗi
- Khắc phục lỗi trong phương thức triển khai AlarmManager, trong đó các chuông báo không được dọn dẹp đúng cách. (aosp/1156444)
- Sửa lỗi một danh sách
WorkRequest
trống sẽ dẫn đến việc tạo chuỗiWorkContinuation
không chính xác. (b/142835274, aosp/1157051)
Các thay đổi về phần phụ thuộc
- WorkManager hiện sử dụng Room 2.2.2.
Phiên bản 2.3.0-beta01
Ngày 20 tháng 11 năm 2019
Phát hành androidx.work:work-*:2.3.0-beta01
. Phiên bản 2.3.0-beta01 bao gồm các thay đổi sau.
Tính năng mới
- Thêm một quy tắc Lint (tìm lỗi mã nguồn) mới để ngăn các lỗi nhà phát triển do phương thức triển khai của
androidx.work.Configuration.Provider
không chính xác khi sử dụng tính năng khởi chạy theo yêu cầu. aosp/1164559
Phiên bản 2.3.0-alpha03
Ngày 23 tháng 10 năm 2019
Phát hành androidx.work:work-*:2.3.0-alpha03
. Phiên bản 2.3.0-alpha03 bao gồm các thay đổi sau.
Tính năng mới
- Thêm API
WorkManager.createCancelPendingIntent()
để dễ dàng huỷ cácWorkRequest
mà không cần phải đăng ký một thành phần khác trongAndroidManifest.xml
. API này giúp bạn dễ dàng huỷ cácWorkRequest
khỏi cácNotification
. Chúng tôi hy vọng API này sẽ được ghép nối với các API nền trước mới trong phiên bản 2.3.0. - WorkManager hiện phụ thuộc vào
androidx.room:*:2.2.0
ổn định.
Các thay đổi về API
- Đổi tên
ForegroundInfo.getNotificationType()
thànhForegroundInfo.getForegroundServiceType()
để nhất quán hơn với các API nền tảng cơ bản. (b/142729893, aosp/1143316)
Sửa lỗi
- Sửa lỗi gây ra do một lệnh gọi không cần thiết đến
setTransactionSuccessful()
bên ngoài một giao dịch. Lỗi này xảy ra đối với một số rất ít trường hợp di chuyển. (b/142580433, aosp/1141737)
Phiên bản 2.3.0-alpha02
Ngày 9 tháng 10 năm 2019
Phát hành androidx.work:work-*:2.3.0-alpha02
. Phiên bản 2.3.0-alpha02 bao gồm các thay đổi sau.
Tính năng mới
- WorkManager hiện hỗ trợ chạy các công việc lâu dài hoặc công việc quan trọng mà hệ điều hành cần lưu giữ. Để biết thêm thông tin, hãy xem
ListenableWorker#setForegroundAsync()
(hoặcCoroutineWorker#setForeground()
đối với Kotlin). (aosp/1133636)
Các thay đổi về API
- API
containsKey
trongData
được đổi tên thànhhasKeyWithValueOfType
. Phương thức mở rộng tương ứng trong thư việnktx
cũng đã được đổi tên. (b/141916545)
Sửa lỗi
- Lịch biểu của WorkManager hoạt động khá ổn định khi số lượng
WorkRequest
đã xếp vào hàng tiệm cận với các giới hạn về lập lịch. (aosp/1105766) - WorkManager chỉ gọi
ListenableWorker#onStopped()
nếu công việc chưa hoàn tất. (b/140055777) - WorkManager hiện xoá thông tin tiến trình khi một trình thực thi (worker) bị gián đoạn hoặc đến trạng thái cuối. (aosp/1114572)
Data
hiện có phương thức trình bàytoString()
hữu ích hơn rất nhiều. (b/140945323)Data
hiện có phương thứcequals()
phù hợp hơn. Phương thức này cũng hỗ trợdeepEquals
cho các kiểuArray
. (b/140922528)- WorkManager hiện lưu trữ các cơ sở dữ liệu nội bộ và các tệp lựa chọn ưu tiên trong một thư mục không sao lưu. (b/114808216)
Phiên bản 2.3.0-alpha01
Ngày 22 tháng 8 năm 2019
Phát hành androidx.work:work-*:2.3.September 5, 20190-alpha01
. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Tính năng mới
- Hiện tại,
ListenableWorker
có thể thiết lập tiến trình thông qua APIsetProgressAsync()
. Đồng thời đã thêm một APIsetProgress
suspend
tương ứng trongCoroutineWorker
và mộtsetProgress
trongRxWorker
sẽ trả về mộtSingle<Void>
. Với các API mới này, các trình thực thi (Worker) có thể truyền tải thông tin tiến trình quaWorkInfo
có APIgetProgress
tương ứng. (b/79481554) Data
có một APIcontainsKey()
dùng để xác thực dữ liệu đầu vào cho cácWorker
có các khoá thuộc kiểu đã dự kiến. (b/117136838)Data
hiện có thể được tuần tự hoá bằng cách sử dụngData.toByteArray()
vàData.fromByteArray()
. Lưu ý rằng không có sự đảm bảo về việc lập phiên bảnData
, vì vậy, bạn không nên giữ nguyên hoặc sử dụng dữ liệu này cho IPC giữa các ứng dụng. Các dữ liệu này chỉ được sử dụng an toàn giữa nhiều quá trình của cùng một ứng dụng.- Thêm chức năng chỉ định
InputMergerFactory
thông quaConfiguration.setInputMergerFactory
. (b/133273159)
Các thay đổi về API
- WorkManager sẽ gửi một thực thể của
IllegalStateException
nếu mộtWorkerFactory
trả về một thực thểListenableWorker
đã được gọi trước đó. (b/139554406) - Tài liệu cập nhật về việc phương thức huỷ bỏ
ListenableFuture
và lệnh gọi lạionStopped()
trongListenableWorker
. (b/138413671)
Sửa lỗi
- Trình lập lịch biểu trong quá trình hiện bỏ qua các
WorkRequest
với các quy tắc ràng buộcidle
. Hiện tại,JobScheduler
chỉ tiếp nhận các yêu cầu này khi thiết bị thực sự trong trạng tháiidle
. (aosp/1089779) TestScheduler
hiện sử dụng chính xácExecutor
được chỉ định cho trình thực thi tác vụ nội bộ của mình trong các hoạt động kiểm thử. (aosp/1090749)
Phiên bản 2.2.0
Phiên bản 2.2.0
Ngày 15 tháng 8 năm 2019
Phát hành androidx.work:work-*:2.2.0
. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Bản phát hành này hoàn toàn giống với phiên bản androidx.work:work-*:2.2.0-rc01
.
Các thay đổi quan trọng trong phiên bản 2.2.0 so với phiên bản 2.1.0
androidx.work:work-gcm:2.2.0
là một cấu phần phần mềm Maven mới, hỗ trợ việc sử dụng GCMNetworkManager làm trình lập lịch biểu khi Dịch vụ Google Play có sẵn đối với các API cấp 22 trở xuống. Đây là phần phụ thuộc tuỳ chọn giúp xử lý nền hiệu quả và đáng tin cậy hơn trên các phiên bản API cũ hơn. Nếu ứng dụng của bạn sử dụng Dịch vụ Google Play, hãy thêm phần phụ thuộc này vào tệp gradle của bạn để tự động nhận hỗ trợ của GCMNetworkManager. Nếu không có Dịch vụ Google Play, WorkManager sẽ tiếp tục quay lại AlarmManager trên các thiết bị cũ.
Phiên bản 2.2.0-rc01
Ngày 30 tháng 7 năm 2019
Phát hành androidx.work:work-*:2.2.0-rc01
. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Sửa lỗi
- Sửa lỗi trong phương thức triển khai AlarmManager, khiến Dịch vụ bị tắt sớm và dẫn đến
RejectedExecutionException
trong một số ít trường hợp. (aosp/1092374) (b/138238197). - Thêm một phương án giải quyết cho một
NullPointerException
khi sử dụng các APIJobScheduler
trên một số thiết bị. (aosp/1091020) (b/138364061), (b/138441699)
Phiên bản 2.2.0-beta02
Ngày 19 tháng 7 năm 2019
Phát hành androidx.work:work-*:2.2.0-beta02
. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Sửa lỗi
- Xoá phần phụ thuộc jacoco ngoài ý muốn đã được giới thiệu trong
2.2.0-beta01
.
Phiên bản 2.2.0-beta01
Ngày 17 tháng 7 năm 2019
Phát hành androidx.work:work-*:2.2.0-beta01
. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Tính năng mới
androidx.work:work-gcm:2.2.0-beta01
là một cấu phần phần mềm Maven mới, hỗ trợ việc sử dụng GCMNetworkManager làm trình lập lịch biểu khi Dịch vụ Google Play có sẵn đối với các API cấp 22 trở xuống. Đây là phần phụ thuộc tuỳ chọn giúp xử lý nền hiệu quả và đáng tin cậy hơn trên các phiên bản API cũ hơn. Nếu ứng dụng của bạn sử dụng Dịch vụ Google Play, hãy thêm phần phụ thuộc này vào tệp gradle của bạn để tự động nhận hỗ trợ của GCMNetworkManager. Nếu không có Dịch vụ Google Play, WorkManager sẽ tiếp tục quay lại AlarmManager trên các thiết bị cũ.
Sửa lỗi
- Sửa lỗi cho
IllegalArgumentException
khi theo dõi trạng thái mạng trên các máy tính bảng Nvidia Shield K1. (aosp/1010188)
Phiên bản 2.1.0
Phiên bản 2.1.0
Ngày 11 tháng 7 năm 2020
Phát hành androidx.work:work-*:2.1.0
. Bản phát hành này hoàn toàn giống với phiên bản androidx.work:work-*:2.1.0-rc01
.
Các thay đổi quan trọng kể từ phiên bản 2.0.1
work-runtime-ktx
hiện yêu cầu Java 8. Nếu gặp vấn đề, bạn có thể thêm phần sau vàobuild.gradle
:kotlinOptions { jvmTarget = "1.8" }
- Thêm tính năng khởi chạy theo yêu cầu dành cho WorkManager, tính năng này sẽ chỉ tạo WorkManager khi được tham chiếu. b/127497100 Để thiết lập dự án của bạn nhằm sử dụng tính năng khởi chạy theo yêu cầu:
- Tắt trình khởi chạy tự động.
- Triển khai
Configuration.Provider
trên đối tượngApplication
tuỳ chỉnh của bạn. - Thay đổi tất cả tham chiếu của
WorkManager.getInstance()
thànhWorkManager.getInstance(Context)
. Trong quá trình thay đổi này, chúng tôi đã ngừng sử dụngWorkManager.getInstance()
. Việc gọi phương thức thay thếWorkManager.getInstance(Context)
mới sẽ luôn an toàn hơn, ngay cả khi bạn không thực hiện việc khởi chạy theo yêu cầu.
- Các
PeriodicWorkRequest
hiện hỗ trợ độ trễ ban đầu. Bạn có thể sử dụng phương thứcsetInitialDelay
trênPeriodicWorkRequest.Builder
để thiết lập độ trễ ban đầu. b/111404867 - Thêm chức năng uỷ quyền cho một hoặc nhiều
WorkerFactory
đã đăng ký bằng cách sử dụngDelegatingWorkerFactory
. b/131435993 - Thêm chức năng tuỳ chỉnh
Executor
do WorkManager sử dụng dành cho tất cả hoạt động lưu giữ nội bộ thông quaConfiguration.Builder.setTaskExecutor
. - Thêm chức năng tạo các lớp
Worker
vàListenableWorker
có thể kiểm thử đơn vị bằng cách sử dụngTestWorkerBuilder
vàTestListenableWorkerBuilder
trong cấu phần phần mềmwork-testing
.- Lưu ý rằng giờ đây,
work-testing
sẽ lấy Kotlin làm phần phụ thuộc và sử dụng một số phần mở rộng Kotlin theo mặc định.
- Lưu ý rằng giờ đây,
- Thêm số lần cố gắng chạy vào
WorkInfo
. b/127290461 - Hiện tại, các kiểu
Data
có thể lưu trữ và truy xuất các byte và các mảng byte. Điều này KHÔNG thay đổi kích thước tối đa của đối tượngData
. - Hiện tại, WorkManager phụ thuộc vào
Room 2.1.0
và điều này sẽ khắc phục một số sự cố cơ sở dữ liệu.
Phiên bản 2.1.0-rc01
Ngày 27 tháng 6 năm 2019
Phát hành androidx.work:work-*:2.1.0-rc01
. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Sửa lỗi
- Sửa lỗi khiến ứng dụng gặp sự cố khi thực thi các công việc với
JobScheduler
trong khi quá trình sao lưu đang diễn ra b/135858602.
Phiên bản 2.1.0-beta02
Ngày 20 tháng 6 năm 2019
Phát hành androidx.work:work-*:2.1.0-beta02
. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Sửa lỗi
TestListenableWorkerBuilder
hiện sử dụng đúngWorkerFactory
khi tạo các thực thể củaListenableWorker
. b/135275844- Khắc phục lỗi dẫn đến sự cố trôi (drift) trong các cửa sổ thực thi của các
WorkRequest
do quá trình xử lý bị gián đoạn (process death). b/135272196
Phiên bản 2.1.0-beta01
Ngày 13 tháng 6 năm 2019
Phát hành androidx.work:work-*:2.1.0-beta01
. Bạn có thể xem các thay đổi trong phiên bản này tại đây.
Sửa lỗi
- Hiện tại, WorkManager phụ thuộc vào
Room 2.1.0
và điều này sẽ khắc phục một số sự cố cơ sở dữ liệu. - Xoá một số vùng lưu trữ I/O khởi động trên luồng chính.
- Khắc phục tình trạng tắc nghẽn tiềm ẩn trong quá trình theo dõi quy tắc ràng buộc. b/134361006
- Huỷ trước các công việc không hợp lệ được phân bổ cho WorkManager. b/134058261
- Thêm một số lệnh gọi phòng vệ vào các API JobScheduler dành cho các thiết bị hoạt động không đúng cách.
Phiên bản 2.1.0-alpha03
Ngày 5 tháng 6 năm 2019
Phát hành androidx.work:*:2.1.0-alpha03
.
Sửa lỗi
- Cải thiện tài liệu dành cho các
PeriodicWorkRequest
. - Hiện tại,
WorkManagerTestInitHelper
sử dụng đúng trình thực thi nền trong các hoạt động kiểm thử. - Khắc phục các vấn đề về SQLite khi xử lý các giao dịch khối lượng lớn trên một số thiết bị. (b/130182503)
- Hiện tại, các phần phụ thuộc của WorkManager trở nên chi tiết hơn. (b/133169148).
- Giải quyết các lỗi OEM cụ thể trong phương thức triển khai
JobScheduler
khi lên lịch công việc bằng WorkManager. - Cải tiến nhiều điểm trong trình lập lịch biểu dựa trên AlarmManager xung quanh thời gian hoạt động của dịch vụ, nhờ đó giải quyết một số sự cố hiếm gặp. (b/133313734)
Phiên bản 2.1.0-alpha02
Ngày 16 tháng 5 năm 2019
WorkManager 2.1.0-alpha02 được phát hành. Phiên bản này chứa một số API mới.
Các thay đổi về API
Các
PeriodicWorkRequest
hiện hỗ trợ độ trễ ban đầu. Bạn có thể sử dụng phương thứcsetInitialDelay
trênPeriodicWorkRequest.Builder
để thiết lập độ trễ ban đầu. b/111404867Thêm chức năng uỷ quyền cho một hoặc nhiều
WorkerFactory
đã đăng ký bằng cách sử dụngDelegatingWorkerFactory
. b/131435993Thêm chức năng tuỳ chỉnh
Executor
do WorkManager sử dụng dành cho tất cả hoạt động lưu giữ nội bộ thông quaConfiguration.Builder.setTaskExecutor
.Cải tiến tài liệu về
WorkRequest.keepResultsForAtLeast
(b/130638001), tính năng khởi chạy theo yêu cầu vàPeriodicWorkRequest.Builder
(b/131711394).
Phiên bản 2.1.0-alpha01
Ngày 24 tháng 4 năm 2019
Phát hành WorkManager 2.1.0-alpha01. Phiên bản này chứa một số API mới. Xin lưu ý rằng bắt đầu từ phiên bản này, các tính năng mới sẽ không được điều chỉnh ngược dòng cho các bản phát hành 1.x. Chúng tôi khuyến nghị bạn chuyển sang 2.x.
Các thay đổi về API
- Thêm tính năng khởi chạy theo yêu cầu dành cho WorkManager, tính năng này sẽ chỉ tạo WorkManager khi được tham chiếu. b/127497100 Để thiết lập dự án của bạn nhằm sử dụng tính năng khởi chạy theo yêu cầu:
- Tắt trình khởi chạy tự động.
- Triển khai
Configuration.Provider
trên đối tượngApplication
tuỳ chỉnh của bạn. - Thay đổi tất cả tham chiếu của
WorkManager.getInstance()
thànhWorkManager.getInstance(Context)
. Trong quá trình thay đổi này, chúng tôi đã ngừng sử dụngWorkManager.getInstance()
. Việc gọi phương thức thay thếWorkManager.getInstance(Context)
mới sẽ luôn an toàn hơn, ngay cả khi bạn không thực hiện việc khởi chạy theo yêu cầu.
- Thêm chức năng tạo các lớp
Worker
vàListenableWorker
có thể kiểm thử đơn vị bằng cách sử dụngTestWorkerBuilder
vàTestListenableWorkerBuilder
trong cấu phần phần mềmwork-testing
.- Lưu ý rằng giờ đây,
work-testing
sẽ lấy Kotlin làm phần phụ thuộc và sử dụng một số phần mở rộng Kotlin theo mặc định.
- Lưu ý rằng giờ đây,
- Thêm số lần cố gắng chạy vào
WorkInfo
. b/127290461 - Hiện tại, các kiểu
Data
có thể lưu trữ và truy xuất các byte và các mảng byte. Điều này KHÔNG thay đổi kích thước tối đa của đối tượngData
. - Ngừng sử dụng
CoroutineWorker.coroutineContext
. Trường này đã được phân loại không chính xác thànhCoroutineDispatcher
. Bạn không cần đến trường này nữa vì bạn có thể tự chuyển đến coroutineContext mong muốn trong phần nội dung của hàm tạm ngưng. RxWorker.createWork()
vàRxWorker.getBackgroundScheduler()
hiện được chú thích với các kiểu trả về của@NonNull
.
Phiên bản 2.0.1
Phiên bản 2.0.1
Ngày 9 tháng 4 năm 2019
Phát hành WorkManager 2.0.1. Bản phát hành này hoàn toàn giống với phiên bản 2.0.1-rc01.
Phiên bản 2.0.1-rc01
Ngày 3 tháng 4 năm 2019
WorkManager 2.0.1-rc01 được phát hành. Phiên bản này chứa một số phần sửa lỗi. Đối với người dùng phiên bản 1.x cũ, một số trong các thay đổi này cũng xuất hiện trong phiên bản 1.0.1-rc01.
Sửa lỗi
- Tính năng kiểm thử Robolectric hiện hoạt động đúng cách với WorkManager. b/122553577
- Khắc phục một trường hợp phức tạp (edge case) gây sự cố, trong đó các tài nguyên dùng để theo dõi các quy tắc ràng buộc không được dọn dẹp trên các API pre-JobScheduler. b/129226383
- Khắc phục lỗi
StackOverflowError
xử lý các chuỗi công việc dài. b/129091233 - Cập nhật tài liệu dành cho các
PeriodicWorkRequest
để chỉ ra rằng API 23 không hỗ trợ thời gian linh hoạt (flex time). - Khắc phục một số đường liên kết bị hỏng trong tài liệu về Kotlin.
Phiên bản 2.0.0
Phiên bản 2.0.0
Ngày 20 tháng 3 năm 2019
WorkManager 2.0.0 được phát hành. Phiên bản này hoàn toàn giống với phiên bản 2.0.0-rc01 và là phiên bản AndroidX 1.0.0 ổn định với các phần phụ thuộc AndroidX. Bạn nên nhắm mục tiêu phiên bản này thay vì các phiên bản 1.x cũ. Mọi hoạt động phát triển sẽ chủ động nhắm mục tiêu đến phiên bản 2.x và phiên bản 1.x sẽ chỉ nhận được các bản sửa lỗi quan trọng trong thời gian có hạn.
Phiên bản 2.0.0-rc01
Ngày 7 tháng 3 năm 2019
WorkManager 2.0.0-rc01 được phát hành. Phiên bản này hoàn toàn giống với phiên bản 1.0.0 ổn định nhưng có các phần phụ thuộc AndroidX. Khi đã phát triển đến phiên bản ổn định 2.0.0, bạn nên sử dụng phiên bản này và các phiên bản 1.x cũ sẽ chỉ nhận được một số phần sửa lỗi quan trọng. Mọi hoạt động phát triển sẽ chủ động nhắm mục tiêu đến phiên bản 2.x.
Phần phụ thuộc trước AndroidX
Tài liệu tham khảo: Java
Groovy
dependencies { def work_version = "1.0.1" // (Java only) implementation "android.arch.work:work-runtime:$work_version" // Kotlin + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "android.arch.work:work-rxjava2:$work_version" // optional - Test helpers androidTestImplementation "android.arch.work:work-testing:$work_version" }
Kotlin
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
Phiên bản 1.0.1
Phiên bản 1.0.1
Ngày 9 tháng 4 năm 2019
WorkManager 1.0.1 được phát hành. Bản phát hành này hoàn toàn giống với phiên bản 1.0.1-rc01.
Xin lưu ý rằng chúng tôi đặc biệt khuyến khích người dùng cập nhật lên WorkManager 2.x vì trong tương lai sẽ có rất ít bản cập nhật dành cho nhánh phiên bản 1.x. Các API mới cũng sẽ không được phát hành cho thư viện 1.x.
Phiên bản 1.0.1-rc01
Ngày 2 tháng 4 năm 2019
WorkManager 1.0.1-rc01 được phát hành. Phiên bản này chứa một số phần sửa lỗi.
Sửa lỗi
- Tính năng kiểm thử Robolectric hiện hoạt động đúng cách với WorkManager. b/122553577
- Khắc phục một trường hợp phức tạp (edge case) gây sự cố, trong đó các tài nguyên dùng để theo dõi các quy tắc ràng buộc không được dọn dẹp trên các API pre-JobScheduler. b/129226383
- Khắc phục lỗi
StackOverflowError
xử lý các chuỗi công việc dài. b/129091233
Phiên bản 1.0.0
Phiên bản 1.0.0
Ngày 5 tháng 3 năm 2019
Đây là bản phát hành ổn định 1.0.0 của WorkManager. Phiên bản này của WorkManager giống với phiên bản 1.0.0-rc02.
Phiên bản 1.0.0-rc02
Ngày 21 tháng 2 năm 2019
Đây là bản phát hành dùng thử (release candidate) thứ hai dành cho bản phát hành ổn định 1.0.0 của WorkManager. Bản phát hành này có hai phần sửa lỗi.
Sửa lỗi
Các
Worker
hiện đã được lên lịch chính xác sau khi xảy ra sự cố ứng dụng. b/124546316Hiện tại, các
Worker
gửi mộtException
chưa được đánh dấu sẽ được đánh dấu chính xác làFAILED
và không còn gặp sự cố trong quá trình tải ứng dụng.
Phiên bản 1.0.0-rc01
Ngày 14 tháng 2 năm 2019
Đây là bản phát hành dùng thử (release candidate) dành cho bản phát hành ổn định 1.0.0 của WorkManager. Bản phát hành này đã sửa một lỗi.
Sửa lỗi
- Phương thức triển khai dựa trên AlarmManager hiện tuân thủ chính xác các thời lượng của
flex
dành cho các PeriodicWorkRequest. b/124274584
Phiên bản 1.0.0-beta05
Ngày 6 tháng 2 năm 2019
Bản phát hành này có một số bản sửa lỗi.
Sửa lỗi
- Khắc phục một trường hợp
JobScheduler.getPendingJob(...)
được sử dụng trên API 23. b/123893059 - Khắc phục một
NullPointerException
trên các thiết bị chạy Android 5.1 (API cấp 22) trở xuống. b/123835104
Phiên bản 1.0.0-beta04
Ngày 4 tháng 2 năm 2019
Bản phát hành này có một số bản sửa lỗi.
Sửa lỗi
- Cải tiến việc lên lịch biểu của PeriodicWork đối với phương thức triển khai dựa trên AlarmManager.
- Khắc phục trường hợp WorkManager không theo dõi được chính xác các quy tắc ràng buộc khi sử dụng phương thức triển khai dựa trên AlarmManager. b/123379508
- Khắc phục trường hợp WorkManager không thể thử lại công việc trên quá trình bị gián đoạn (process death) khi sử dụng phương thức triển khai dựa trên AlarmManager. b/123329850
- Khắc phục trường hợp dẫn đến WorkManager bị rò rỉ Wakelocks khi sử dụng phương thức triển khai dựa trên AlarmManager.
Phiên bản 1.0.0-beta03
Ngày 25 tháng 1 năm 2019
Bản phát hành này có một số phần sửa lỗi.
Sửa lỗi
- Chúng tôi đã ra mắt một phiên bản hồi quy
1.0.0-beta02
khiến công việc không được thực thi đúng trong một số trường hợp. b/123211993 - Khắc phục trường hợp công việc không tuân thủ đúng thời gian chờ. b/122881597
- Khắc phục một
ConcurrentModificationException
trên các thiết bị chạy Android 5.1 (API cấp 22) trở xuống. Đây là phần tiếp theo của bản sửa lỗi trong1.0.0-beta02
. b/121345393 - Thêm
exported=false
cho một số thành phần trong tệp kê khai bị thiếu chú thích này. - Thêm thông tin về cách WorkManager tương tác với hệ điều hành trong tài liệu đi kèm với các cấp độ của gói.
Phiên bản 1.0.0-beta02
Ngày 15 tháng 1 năm 2019
Bản phát hành này có một số bản sửa lỗi.
Sửa lỗi
- Khắc phục một trường hợp phức tạp (edge case), trong đó công việc định kỳ có thể chạy nhiều lần trong mỗi khoảng thời gian trên các thiết bị chạy Android 6.0 (API cấp 23). b/121998363
- Khắc phục một
ConcurrentModificationException
trên các thiết bị chạy Android 5.1 (API cấp 22) trở xuống. b/121345393 - Khắc phục lỗi thực thi công việc khi không đáp ứng các quy tắc Ràng buộc trên các thiết bị chạy Android 5.1 (API cấp 22) trở xuống. b/122578012
- Đã tối ưu hoá việc xử lý hoàn thành công việc để trở nên nhanh hơn trong một số trường hợp phức tạp. b/122358129
- Thêm một thay đổi để giải quyết các điều kiện tương tranh (race condition) tiềm ẩn trong nhiều thực thể của
LiveData
mà WorkManager sử dụng. - Chuyển sang sử dụng phần phụ thuộc
Room
phiên bản1.1.1
thay vì1.1.1-rc01
; các phiên bản này hoàn toàn giống nhau. b/122578011
Phiên bản 1.0.0-beta01
Ngày 19 tháng 12 năm 2018
Bản phát hành này không chứa nội dung thay đổi API nào. Từ giờ trở đi, WorkManager dự kiến sẽ duy trì API ổn định cho đến phiên bản tiếp theo trừ khi có sự cố nghiêm trọng. Bản phát hành này có một số phần sửa lỗi.
Sửa lỗi
- Các phần tử con đã huỷ trước đó của công việc thuộc lớp cha đã hoàn thành thành công sẽ không còn chạy được nữa. b/120811767
- Các lớp ghi nhật ký đã được khởi tạo đúng cách (chủ yếu xuất hiện trong quá trình kiểm thử).
Phiên bản 1.0.0-alpha13
Ngày 12 tháng 12 năm 2018
Bản phát hành này có một sự thay đổi nhỏ về API sẽ hữu ích cho một số người dùng Kotlin.
Các thay đổi về API
- Chuyển
androidx.work.Result
làm lớp bên trong củaListenableWorker
. Điều này giúp ngăn chặn việc tái cấu trúc xung đột với lớpResult
cấp cao của Kotlin. Đây là một thay đổi có thể gây lỗi API. b/120564418
Thay đổi về API có thể gây lỗi
- Chuyển
androidx.work.Result
làm lớp bên trong củaListenableWorker
.
Phiên bản 1.0.0-alpha12
Ngày 5 tháng 12 năm 2018
Bản phát hành này chứa một số thay đổi về API có thể gây lỗi; xin vui lòng xem phần Các thay đổi về API có thể gây lỗi bên dưới. Phiên bản này có thể sẽ được phát hành dưới dạng phiên bản beta đầu tiên của chúng tôi. alpha12
cũng chứa nội dung cập nhật tài liệu mở rộng.
Các thay đổi về API
- Cấu phần phần mềm mới
work-rxjava2
, giới thiệuRxWorker
. Đây làListenableWorker
dự kiến cóSingle<Payload>
. - Chúng tôi đã ngừng hỗ trợ Firebase JobDispatcher do sắp ngừng sử dụng. Điều này có nghĩa là cấu phần phần mềm
work-firebase
sẽ không còn được cập nhật khi chúng tôi chuyển sang giai đoạn thử nghiệm. Chúng tôi sẽ tìm cách bổ sung một giải pháp thay thế trong tương lai. - Kết hợp
Payload
vàoResult
.Result
hiện là một "lớp kín" với 3 cách triển khai cụ thể mà bạn có thể thu được quaResult.success()
(hoặcResult.success(Data)
),Result.failure()
(hoặcResult.failure(Data)
) vàResult.retry()
. CácListenableFuture
của bạn nay nhận đượcResult
thay vìPayload
.Worker
không có các phương thức getter và setter cho đầu raData
. Đây là một thay đổi có thể gây lỗi. - Thêm
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
vàConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
cùng các biến thể để hỗ trợ tốt hơn cho việc kích hoạt chậm (slow triggering) các URI nội dung. b/119919774 - Thêm biến thể
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
. Phương thức này yêu cầu API 26. - Thêm các phương thức mở rộng Kotlin
Operation.await()
vàListenableFuture.await()
. - Đổi tên
Operation.getException()
thànhOperation.getThrowable()
. Đây là một thay đổi có thể gây lỗi. - Lớp và phương thức
ContentUriTriggers
tham chiếu đến lớp này sẽ không dùng được cho mục đích công khai nữa. Đây là một thay đổi có thể gây lỗi. - Xoá các phương thức vararg còn lại trong
WorkManager
,WorkContinuation
vàOneTimeWorkRequest
để tinh giản API. Để khắc phục sự cố xây dựng, bạn có thể gói vararg hiện có của mình bằngArrays.asList(...)
. Chúng tôi vẫn cung cấp các phiên bản của từng phương thức. Đây là một thay đổi có thể gây lỗi. - Xoá các biến thể
WorkContinuation.combine(OneTimeWorkRequest, *)
. Các biến thể này đã đưa ra một API khó hiểu. Các phương thứccombine
hiện tại dễ hiểu hơn. Đây là một thay đổi có thể gây lỗi.
Sửa lỗi
- Việc triển khai Pre-Marshmallow hiện đáng tin cậy hơn trong việc khôi phục từ quá trình kết thúc một tác vụ đã thực thi.
LiveData
được quan sát quaobserveForever
được theo dõi qua WorkManager. Đây là bản sửa lỗi điều chỉnh cho phiên bản cũ của một thư viện Room. b/74477406- Hiện tại,
Data.Builder.build()
sẽ tạo ra một trường hợp ngoại lệ nếu đối tượng nối tiếp vượt quá kích thước tối đa. Trước đây, lỗi này chỉ xảy ra trên một chuỗi trong nền mà bạn không thể xử lý đúng cách. - Phân biệt nâng cao công việc đã dừng so với công việc đã huỷ;
getWorkInfoById()
sẽ trả về mộtWorkInfo
vớiCANCELLED
State
trong quá trìnhListenableWorker.onStopped()
. - Coi
null
Result
là lỗi trongListenableWorker
. b/120362353 - Bản sửa lỗi suy đoán cho Máy tính bảng Shield chạy API 24 mà đôi khi cho ra một
IllegalArgumentException
. b/119484416
Thay đổi về API có thể gây lỗi
- Chúng tôi đã ngừng hỗ trợ Firebase JobDispatcher do sắp ngừng sử dụng. Điều này có nghĩa là cấu phần phần mềm
work-firebase
sẽ không còn được cập nhật khi chúng tôi chuyển sang giai đoạn thử nghiệm. Chúng tôi sẽ tìm cách bổ sung một giải pháp thay thế trong tương lai. - Kết hợp
Payload
vàoResult
.Result
hiện là một "lớp kín" với 3 cách triển khai cụ thể mà bạn có thể thu được quaResult.success()
(hoặcResult.success(Data)
),Result.failure()
(hoặcResult.failure(Data)
) vàResult.retry()
. CácListenableFuture
của bạn nay nhận đượcResult
thay vìPayload
.Worker
không có các phương thức getter và setter cho đầu raData
. - Thêm các phương thức mở rộng Kotlin
Operation.await()
vàListenableFuture.await()
. - Đổi tên
Operation.getException()
thànhOperation.getThrowable()
. - Lớp và phương thức
ContentUriTriggers
tham chiếu đến lớp này sẽ không dùng được cho mục đích công khai nữa. - Xoá các phương thức vararg còn lại trong
WorkManager
,WorkContinuation
vàOneTimeWorkRequest
để tinh giản API. Để khắc phục sự cố xây dựng, bạn có thể gói vararg hiện có của mình bằngArrays.asList(...)
. Chúng tôi vẫn cung cấp các phiên bản của từng phương thức. - Xoá các biến thể
WorkContinuation.combine(OneTimeWorkRequest, *)
. Các biến thể này đã đưa ra một API khó hiểu. Các phương thứccombine
hiện tại dễ hiểu hơn.
Phiên bản 1.0.0-alpha11
Ngày 8 tháng 11 năm 2018
Bản phát hành này chứa nhiều thay đổi sẽ trở thành API ổn định tại giai đoạn beta
.
Bản phát hành này có các thay đổi về API có thể gây lỗi; vui lòng xem phần Các thay đổi về API có thể gây lỗi bên dưới.
Các thay đổi về API
work-runtime-ktx
ra mắt mộtCoroutineWorker
mới.WorkStatus
đổi tên thànhWorkInfo
Tất cả biến thể tương ứng của phương thứcgetStatus
đã được đổi tên thành các biến thể củagetWorkInfo
tương ứng. Đây là một thay đổi có thể gây lỗi.ListenableWorker.onStopped()
không còn chấp nhận việc có đối số boolean cho biếtWorkRequest
có bị huỷ hay không.WorkManager
không còn tạo ra sự khác biệt này nữa. Đây là một thay đổi có thể gây lỗi.- Gói
androidx.work.test
đổi tên thành góiandroidx.work.testing
. Đây là một thay đổi có thể gây lỗi. - Phương thức setter trên
Constraints
không còn là một phần của API công khai. Đây là một thay đổi có thể gây lỗi. WorkerParameters.getTriggeredContentUris()
vàWorkerParameters.getTriggeredContentAuthorities()
đã trả về các mảng trước đó. Những phương thức này hiện trả về Collections. Đây là một thay đổi có thể gây lỗi.ListenableWorker.onStartWork()
đổi tên thànhListenableWorker.startWork()
. Đây là một thay đổi có thể gây lỗi.- Hàm khởi tạo cho
WorkStatus
không còn là một phần của API công khai. Đây là một thay đổi có thể gây lỗi. Configuration.getMaxJobSchedulerID()
vàConfiguration.getMinJobSchedulerID()
lần lượt được đổi tên thànhConfiguration.getMinJobSchedulerId()
vàConfiguration.getMaxJobSchedulerId()
. Đây là một thay đổi có thể gây lỗi.- Thêm nhiều chú thích
@NonNull
vào API công khai để cải thiện tính gọn nhẹ (ergonomic) của API. - Thêm API
WorkManager.enqueueUniqueWork()
để thêm cácOneTimeWorkRequest
duy nhất vào hàng đợi mà không phải tạoWorkContinuation
. - Tất cả biến thể của các phương thức
enqueue
vàcancel
trênWorkManager
hiện sẽ trả về kiểuOperation
mới. Đây là một thay đổi có thể gây lỗi. - Tất cả biến thể của
enqueue
không còn chấp nhận các vararg đối vớiWorkRequest
nữa. Đây là một thay đổi có thể gây lỗi. Hãy sử dụng Bộ sưu tập (Collection). Bạn có thể sử dụngArrays.asList()
để sửa đổi mã hiện có. Chúng tôi làm như vậy để giảm số lượng API và phương thức giao diện. - Hiện tại, nếu cố gắng thực hiện
initialize
WorkManager
nhiều lần trong mỗi quá trình, sẽ dẫn đến mộtIllegalStateException
. Đây là một thay đổi có thể gây lỗi.
Sửa lỗi
- Giờ đây,
WorkRequest.Builder
trong cấu phần phần mềmwork-runtime-ktx
hiện sử dụngListenableWorker
. Bản sửa lỗi b/117666259 - Hãy đảm bảo thời gian chạy tiếp theo của
PeriodicWork
là trong tương lai. Bản sửa lỗi b/118204399 - Xoá phần dung lượng lưu trữ I/O có thể được tạo ra khi sử dụng WorkManager lúc khởi động ứng dụng. Bản sửa lỗi b/117796731
- Khắc phục một tình huống tương tranh trong
WorkConstraintsTracker
. Khắc phục android-workmanager/issues/56
Thay đổi về API có thể gây lỗi
WorkStatus
đổi tên thànhWorkInfo
Tất cả biến thể tương ứng của phương thứcgetStatus
đã được đổi tên thành các biến thể củagetWorkInfo
tương ứng.ListenableWorker.onStopped()
không còn chấp nhận việc có đối số boolean cho biếtWorkRequest
có bị huỷ hay không.WorkManager
không còn tạo ra sự khác biệt này nữa.- Gói
androidx.work.test
đổi tên thành góiandroidx.work.testing
. - Phương thức setter trên
Constraints
không còn là một phần của API công khai. WorkerParameters.getTriggeredContentUris()
vàWorkerParameters.getTriggeredContentAuthorities()
đã trả về các mảng trước đó. Những phương thức này hiện trả về Collections.ListenableWorker.onStartWork()
đổi tên thànhListenableWorker.startWork()
.- Hàm khởi tạo cho
WorkStatus
không còn là một phần của API công khai. Configuration.getMaxJobSchedulerID()
vàConfiguration.getMinJobSchedulerID()
lần lượt được đổi tên thànhConfiguration.getMinJobSchedulerId()
vàConfiguration.getMaxJobSchedulerId()
.- Tất cả biến thể của các phương thức
enqueue
vàcancel
trênWorkManager
hiện sẽ trả về kiểuOperation
mới. - Tất cả biến thể của
enqueue
không còn chấp nhận các vararg đối vớiWorkRequest
nữa. - Hiện tại, nếu cố gắng thực hiện
initialize
WorkManager
nhiều lần trong mỗi quá trình, sẽ dẫn đến mộtIllegalStateException
.
Phiên bản 1.0.0-alpha10
Ngày 11 tháng 10 năm 2018
Bản phát hành này hỗ trợ công việc không đồng bộ do nhà phát triển kiểm soát. Bản phát hành này có các thay đổi về API có thể gây lỗi; vui lòng xem phần Các thay đổi về API có thể gây lỗi bên dưới.
Chúng tôi dự đoán rằng WorkManager sẽ bước vào giai đoạn cuối của giai đoạn alpha. Chúng tôi dự kiến API sẽ ổn định trong giai đoạn beta, vì vậy, vui lòng dành thời gian để gửi phản hồi của bạn trên công cụ theo dõi lỗi của chúng tôi.
Các thay đổi về API
- Xoá mọi phương thức và lớp
deprecated
trước đây, đặc biệt là hàm khởi tạoWorker
mặc định. Đây là một thay đổi về API có thể gây lỗi. - Đổi tên
NonBlockingWorker
thànhListenableWorker
, hiện là một lớp công khai đã không còn ẩn và sẵn sàng để sử dụng.ListenableWorker
cung cấp quyền truy cập vào một phương thức trừu tượng (ListenableFuture<Payload> onStartWork()
) được gọi trên luồng chính. Bạn có thể bắt đầu và xử lý công việc một cách không đồng bộ. Khi hoàn tất, bạn nên cập nhậtListenableFuture
cho phù hợp. Các cách triển khai tham chiếu củaListenableFuture
được cung cấp trong góiFutures
ởalpha02
(xem bên dưới phầnWorkManager
).Worker
mở rộngListenableWorker
và vẫn hoạt động như trước đây, bằng phương thứcResult doWork()
trừu tượng.- Đảo ngẫu nhiên một số phương thức và thành phần từ
Worker
đếnListenableWorker
. - Chúng tôi sẽ sớm cung cấp các triển khai tham chiếu cho
ListenableWorker
sử dụng Kotlin coroutine (khi các phiên bản ổn định đã được phát hành) và RxJava2.
- Giao diện
WorkerFactory
và cách triển khai cụ thểDefaultWorkerFactory
đã được hợp nhất với một lớp trừu tượng có tên làWorkerFactory
. Quá trình triển khai đảm bảo hành vi dựa trên phản ánh mặc định được gọi là nỗ lực cuối cùng đối với mọi phiên bảnWorkerFactory
do người dùng tạo. Đây là một thay đổi có thể gây lỗi. - Xoá
WorkManager.synchronous()
,WorkContinuation.synchronous()
và tất cả phương thức liên quan. ThêmListenableFuture<Void>
làm kiểu trả về của nhiều phương thức về API. Đây là một thay đổi về API có thể gây lỗi.- Bạn hiện có thể lấy và quan sát một cách đồng bộ bằng cách sử dụng
ListenableFuture
. Ví dụ nhưWorkManager.enqueue()
dùng để trả vềvoid
; mã này hiện trả vềListenableFuture<Void>
. Bạn có thể gọiListenableFuture.addListener(Runnable, Executor)
hoặcListenableFuture.get()
để chạy mã khi hoạt động này hoàn tất. - Vui lòng lưu ý những
ListenableFuture
này không cho bạn biết thao tác thành công hay không; chỉ cho biết việc đã hoàn tất. Bạn vẫn cần phải kết nối các phương thức WorkManager để tìm hiểu thông tin này. - Chúng tôi bỏ qua các lệnh gọi
cancel()
trên các đối tượng này, vì dễ gây nhầm lẫn và khó giải thích (bạn đang huỷ hành động hay công việc được thực hiện?). Điều này nằm trong hợp đồngFuture
. - Để duy trì sự đồng nhất với các phương thức
getStatus*
đồng bộ, chúng tôi đã cung cấp các biến thểListenableFuture
và đổi tên các biến thể hiện có đã trả lạiLiveData
để có "LiveData" một cách rõ ràng dưới dạng một phần của tên (chẳng hạn nhưgetStatusesByIdLiveData(UUID)
). Đây là một thay đổi về API có thể gây lỗi.
- Bạn hiện có thể lấy và quan sát một cách đồng bộ bằng cách sử dụng
Sửa lỗi
- Khắc phục một vấn đề đã được nhận biết từ phiên bản alpha09 về các tệp
androidx-annotations.pro
trùng lặp. Bạn có thể xoá phương án giải quyết khỏi ghi chú phát hành trước đây bằng cách xoáexclude 'META-INF/proguard/androidx-annotations.pro'
khỏi tệp gradle của mình. - Thêm các cấu hình ProGuard để giữ lại hàm khởi tạo
Worker
mới. b/116296569 - Khắc phục
NullPointerException
có khả năng xảy ra trong một tình huống tương tranh mà công việc bịREPLACE
. b/116253486 và b/116677275 WorkContinuation.combine()
hiện chấp nhận một hoặc nhiềuWorkContinuation
thay vì hai hoặc nhiều. b/117266752
Thay đổi về API có thể gây lỗi
- Xoá mọi phương thức và lớp
deprecated
trước đây, đặc biệt là hàm khởi tạoWorker
mặc định. - Giao diện
WorkerFactory
và cách triển khai cụ thểDefaultWorkerFactory
đã được hợp nhất với một lớp trừu tượng có tên làWorkerFactory
. - Xoá
WorkManager.synchronous()
vàWorkContinuation.synchronous()
. - Các phương thức
WorkManager.getStatus*()
nay trả vềListenableFuture
.WorkManager.getStatus*LiveData()
trả về cácLiveData
.
Phiên bản 1.0.0-alpha09
Ngày 19 tháng 9 năm 2018
Vấn đề đã biết
Nếu bạn gặp phải vấn đề sau: "More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'" (Đã tìm thấy nhiều tệp bằng đường dẫn độc lập của hệ điều hành 'META-INF/proguard/androidx-annotations.pro'), vui lòng đưa giải pháp dưới đây vào tệp gradle như một giải pháp tạm thời trong khi chúng tôi sửa lỗi trong alpha10:
Groovy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
Sửa lỗi
- Thêm một bản sửa lỗi khác cần thiết đối với lỗi "100 công việc". b/115560696
- Đã bổ sung một số phần sửa lỗi đối với các lỗi ràng buộc về khoá ngoại (foreign key constraint errors) gây ra bởi tình trạng tương tranh (race condition). b/114705286
- Đã uỷ quyền các lệnh gọi
ConstraintTrackingWorker.onStopped(boolean)
tớiWorker
cơ bản. b/114125093 - Thực hiện thời gian trì hoãn tối thiểu chính xác cho Firebase JobDispatcher. b/113304626
- Cải tiến việc đảm bảo phân luồng nội bộ đối với thư viện.
- Khắc phục vấn đề tiềm ẩn khi loại bỏ
LiveData
nội bộ.
Các thay đổi về API
- Bạn hiện có thể tạo phiên bản
Worker
của riêng mình trong thời gian chạy bằng cách chỉ địnhWorkerFactory
trongWorkManager.Configuration
. Trạng thái ban đầu dự phòng làDefaultWorkerFactory
, khớp với hành vi của các phiên bản WorkManager trước đây.- Hàm khởi tạo mặc định cho
Worker
vàNonBlockingWorker
hiện được đánh dấu là không dùng nữa. Vui lòng sử dụng hàm khởi tạo mới (Worker(Context, WorkerParameters)
) và gọisuper(Context, WorkerParameters)
; các phiên bản tương lai của WorkManager sẽ xoá hàm khởi tạo mặc định.
- Hàm khởi tạo mặc định cho
- Chúng tôi đã bắt đầu sử dụng cấu phần phần mềm
ListenableFuture
mới trong nội bộ (không có phần phụ thuộc Guava). Chúng tôi sẽ giới thiệu ListenableFutures với API trong các bản phát hành sắp tới. Thay đổi này sẽ hỗ trợ hiển thị sự kiện sau cùng củaNonBlockingWorker
. - Thêm khả năng kích hoạt công việc được tính giờ trong
TestDriver
thông quaTestDriver.setInitialDelayMet(UUID)
vàTestDriver.setPeriodDelayMet(UUID)
. b/113360060
Thay đổi có thể gây lỗi
- Ngừng sử dụng hàm khởi tạo
Worker
vàNonBlockingWorker
mặc định. Vui lòng chuyển sang hàm khởi tạo mới sớm nhất có thể. Các phiên bản trong tương lai sẽ xoá hàm khởi tạo mặc định.
Phiên bản 1.0.0-alpha08
Ngày 27 tháng 8 năm 2018
Sửa lỗi
- Các thành phần WorkManager được gắn nhãn rõ ràng là khởi động trực tiếp mà không hề hay biết để chúng không kích hoạt trong khi khởi động trực tiếp. Trong tương lai, chúng tôi sẽ cung cấp một phiên bản WorkManager mà người dùng có thể khởi động trực tiếp. b/112665532
- Sửa lỗi công việc được thử lại không chạy. b/112604021
- Khắc phục lỗi công việc định kỳ không được thực thi lặp lại (liên quan đến vấn đề trên). b/112859683
- Ghi nhớ các chính sách giảm giá khi quy trình ứng dụng đang chạy.
- Sửa các thông báo ngoại lệ trong
Data
để chỉ ra giới hạn là 10 KB. - Giảm giá trị tối đa của
Configuration.setMaxSchedulerLimit(int)
xuống còn 50 để tính đến độ trễ trong quá trình hoàn tất xử lýJobScheduler
. b/112817355
Phiên bản 1.0.0-alpha07
Ngày 16 tháng 8 năm 2018
Sửa lỗi
- Khắc phục một truy vấn SQL có thể có giới hạn âm và có thể trả về một số lượng kết quả không liên kết.
- Công việc đã hoàn tất thực thi hiện đang huỷ một cách chính xác mọi bản sao đang chờ xử lý của chính công việc đó trong các Trình lập lịch biểu khác. Điều này đã dẫn đến việc vượt quá giới hạn
JobScheduler
việc làm. b/111569265 - Sửa một
ConcurrentModificationException
trongConstraintTracker
. b/112272753 - Thay đổi các chú thích kiểu trả về của
Data.getBooleanArray(String)
vàData.getIntArray(String)
thành@Nullable
thay vì@NonNull
. b/112275229
Các thay đổi về API
Worker
hiện mở rộng một lớp mới làNonBlockingWorker
. Điều này không ảnh hưởng đến mọi hoạt động sử dụng hiện tại. Trong tương lai,NonBlockingWorker
sẽ trở thành một thực thể được hỗ trợ đầy đủ dành cho các giải pháp phân luồng tuỳ chỉnh.- Thay đổi các chú thích kiểu trả về của
Data.getBooleanArray(String)
vàData.getIntArray(String)
thành@Nullable
thay vì@NonNull
. b/112275229 - Các phần mở rộng Kotlin: ngừng sử dụng
Map.toWorkData()
và thêmworkDataOf(vararg Pair<String, Any?>)
cấp cao nhất để nhất quán hơn với các API hiện có.
Phiên bản 1.0.0-alpha06
Ngày 1 tháng 8 năm 2018
Sửa lỗi
- Ngăn chặn việc khoá cơ sở dữ liệu khi lên lịch công việc. b/111801342
- Sửa lỗi khiến
PeriodicWork
không chạy được theo lịch khi ở Chế độ nghỉ (Doze). b/111469837 - Khắc phục một tình huống tương tranh khi theo dõi các quy tắc ràng buộc khiến
WorkManager
gặp sự cố. googleclassrooms/android-workmanager/issues/56 - Tạo
WorkRequest
duy nhất khi sử dụngWorkRequest.Builder#build()
. b/111408337 - Chỉ cho phép sử dụng
RescheduleReceiver
khi có cácWorkRequest
cần dùng. b/111765853
Phiên bản 1.0.0-alpha05
Ngày 24 tháng 7 năm 2018
Các thay đổi về API
WorkManager.getInstance()
nay được chú thích bằng@NonNull
thay vì@Nullable
. Thay vào đó, nếu singleton không được khởi chạy đúng cách trong trường hợp khởi chạy thủ công, phương thức này sẽ gửi mộtIllegalStateException
. Đây là một thay đổi về API có thể gây lỗi.- Thêm một API mới,
Configuration.Builder.setMinimumLoggingLevel(int)
, có thể kiểm soát độ chi tiết của WorkManager. Theo mặc định, WorkManager ghi nhật kýLog.INFO
trở lên. - Thay đổi chữ ký của
Data.getString()
để không sử dụng giá trị mặc định nữa (giá trị mặc định này được ngầm hiểu lànull
). Đây là một thay đổi về API có thể gây lỗi. - Đánh dấu một số phương thức chỉ cần thiết để sử dụng nội bộ là
@hide
. Bao gồm hàm khởi tạoConstraints
,Data.toByteArray()
vàData.fromByteArray(byte[])
. Đây là một thay đổi về API có thể gây lỗi.
Sửa lỗi
- WorkManager không còn thực thi công việc trong trường hợp đã biết là tự động sao lưu. Việc này có thể đã dẫn đến sự cố. b/110564377
- Sửa lỗi lên lịch kép (double-scheduling) các
PeriodicWorkRequest
khi sử dụngJobScheduler
. b/110798652 - Khắc phục vấn đề
PeriodicWorkRequest
không thực thi chính xác sau khi thiết bị nghỉ ngơi (doze). b/111469837 - Khắc phục vấn đề về độ trễ ban đầu khi sử dụng Firebase JobDispatcher. b/111141023
- Khắc phục một số vấn đề có thể xảy ra liên quan đến thời gian và điều kiện tương tranh.
- Giải phóng đúng cách các
BroadcastReceiver
không còn cần thiết. - Tối ưu hoá hiệu quả lập lịch biểu lại khi ứng dụng khởi động lại sau khi bị buộc đóng.
- Cho phép gọi
TestScheduler.setAllConstraintsMet(UUID)
trước hoặc sau khi xếp hàngWorkRequest
nhất định. b/111238024
Thay đổi có thể gây lỗi
WorkManager.getInstance()
nay được chú thích bằng@NonNull
thay vì@Nullable
.- Thay đổi chữ ký của
Data.getString()
để không sử dụng giá trị mặc định nữa (giá trị mặc định này được ngầm hiểu lànull
). - Đánh dấu một số phương thức chỉ cần thiết để sử dụng nội bộ là
@hide
. Bao gồm hàm khởi tạoConstraints
,Data.toByteArray()
vàData.fromByteArray(byte[])
.
Phiên bản 1.0.0-alpha04
Ngày 26 tháng 6 năm 2018
Sửa lỗi
PeriodicWorkRequest
đã được lên lịch lại chính xác khi sử dụng phương thức triển khai dựa trênAlarmManager
.- Sửa lỗi ANR có thể xảy ra khi lên lịch lại cho tất cả trình thực thi sau khi buộc dừng hoặc khởi động lại. b/110507716
- Thêm các chú thích thuộc tính rỗng vào nhiều API WorkManager. b/110344065
- Ghi các trường hợp ngoại lệ chưa nắm bắt được xảy ra trong quá trình thực hiện trình thực thi. b/109900862
- Cho phép di chuyển cơ sở dữ liệu phá hoại trong trường hợp bạn quyết định khôi phục phiên bản WorkManager cũ. b/74633270
- Khắc phục sự cố di chuyển nếu bạn tạo thẻ ẩn trùng lặp. Đây là một vấn đề rất hiếm khi xảy ra nếu bạn đã tự sử dụng cùng một định dạng thẻ ngầm ẩn.
Phiên bản 1.0.0-alpha03
Ngày 19 tháng 6 năm 2018
Sửa lỗi
Khắc phục một điều kiện tương tranh (race condition) trong phương thức triển khai dựa trên
AlarmManager
. b/80346526.Khắc phục sự cố trùng lặp khi sử dụng
JobScheduler
sau khi khởi động lại thiết bị.Việc làm có kích hoạt URI nội dung giờ đây vẫn tồn tại sau mỗi lần khởi động lại. b/80234744
Các lần cập nhật tài liệu. b/109827628, b/109758949, b/80230748
Khắc phục sự cố khi sắp xếp lại một
WorkRequest
. b/109572353.Khắc phục các cảnh báo của trình biên dịch Kotlin khi sử dụng phần phụ thuộc
work-runtime-ktx
.WorkManager hiện sử dụng
Room
phiên bản1.1.1-rc1
.
Các thay đổi về API
- Thêm
getStatusesSync()
, phiên bản đồng bộ hoá củaWorkContinuation.getStatuses()
. Worker
có khả năng phân biệt giữa quá trình huỷ do người dùng thực hiện và tạm thời huỷ theo yêu cầu của hệ điều hành.Worker.isStopped()
trả vềtrue
nếu có yêu cầu ngừng bất kỳ loại yêu cầu nào.Worker.isCancelled()
trả vềtrue
khi công việc đã bị huỷ bỏ một cách rõ ràng. b/79632247- Thêm tuỳ chọn hỗ trợ cho jobParameters#getNetwork() trên API 28. Thông tin này được tiết lộ qua
Worker.getNetwork()
. - Thêm
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
để bạn có thể kiểm soát số lượng lệnh được gửi đếnJobScheduler
hoặcAlarmManager
. Điều này giúp ngănWorkManager
sử dụng tất cảJobScheduler
còn trống của bạn. - Thêm
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
giúp khai báo một loạtJobScheduler
ID công việc một cách an toàn để choWorkManager
có thể sử dụng. b/79996760 Worker.getRunAttemptCount()
trả về số lần chạy hiện tại cho mộtWorker
nhất định. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
cho phép bạn thêm mộtPeriodicWorkRequest
duy nhất vào hàng đợi. b/79600647WorkManager.cancelAllWork()
huỷ bỏ tất cảWorker
. Các thư viện phụ thuộc vàoWorkManager
có thể truy vấn thời điểm phương thức này được gọi lần cuối bằng cách sử dụngWorkManager.getLastCancelAllTimeMillis()
để xoá thêm trạng thái nội bộ.- Thêm
WorkManager.pruneWork()
để xoá các công việc đã hoàn thành khỏi cơ sở dữ liệu nội bộ. b/79950952, b/109710758
Các thay đổi về hành vi
- Thêm một thẻ ngầm ẩn cho tất cả
WorkRequest
, thẻ này cũng đủ điều kiện để trở thành tên lớp củaWorker
. Điều này cho phép xoá cácWorkRequest
không có cáctag
hoặc khiid
không có sẵn. b/109572351
Thay đổi có thể gây lỗi
- Đổi tên
Worker.WorkerResult
thànhWorker.Result
. Worker.onStopped
hiện có một tham sốisCancelled
bổ sung được đặt thànhtrue
khiWorker
bị huỷ một cách rõ ràng.
Phiên bản 1.0.0-alpha02
Ngày 24 tháng 5 năm 2018
Sửa lỗi
- Sửa một
NullPointerException
trênState.isFinished()
. b/79550068 - Sửa lỗi khiến các
Worker
được lên lịch lại trênApplication.onCreate()
. b/79660657 - Sửa lỗi khiến bạn có thể lên lịch công việc nhiều hơn mức mà hệ điều hành cho phép. b/79497378
- Chuyển việc dọn dẹp các khoá chế độ thức (wake lock) được liên kết với các
Worker
sang luồng nền. - Quá trình triển khai
AlarmManager
hiện xoá đúng cách khi tất cả công việc đang chờ xử lý hoàn tất. - Khắc phục bằng cách dọn dẹp các truy vấn SQL ảnh hưởng đến các ngôn ngữ không phải tiếng Anh. b/80065360
- Thêm tính năng hỗ trợ cho các
float
trongData
. b/79443878 Data.Builder.putAll()
hiện trả về một thực thể củaBuilder
. b/79699162- Hiển thị thêm Javadoc và bản sửa lỗi trong tài liệu. b/79691663
Các thay đổi về API
Worker
có thể phản ứng với việc bị chặn. Bạn có thể sử dụngWorker.isStopped()
để kiểm tra xemWorker
đã bị ngừng hay chưa. Có thể dùngWorker.onStopped()
để thực hiện các thao tác dọn dẹp nhẹ.- API
Worker.getTags()
trả về mộtSet
thẻ được liên kết vớiWorker
. - Thêm các phương thức nạp chồng (overload)
javax.time.Duration
cho các API, kết hợp giữa thời lượng vàTimeUnit
. Trình bảo vệ:@RequiresApi(26)
. - Các phần mở rộng
WorkManager
đã chuyển từ góiandroidx.work.ktx
sang góiandroidx.work
. Các phần mở rộng cũ sẽ không còn được sử dụng nữa và sẽ bị xoá trong các phiên bản sắp tới. - Ngừng sử dụng
Configuration.withExecutor()
. Sử dụngConfiguration.setExecutor()
thay thế.
Phiên bản 1.0.0-alpha01
Ngày 8 tháng 5 năm 2018
WorkManager đơn giản hoá việc lập lịch và thực thi công việc trong nền với sự đảm bảo và khả năng nhận biết quy tắc ràng buộc. Bản phát hành đầu tiên này là 1.0.0-alpha01
.