WorkManager
| Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
|---|---|---|---|---|
| 22 Oktober 2025 | 2.11.0 | - | - | - |
Mendeklarasikan dependensi
Untuk menambahkan dependensi pada WorkManager, Anda harus menambahkan repositori Maven Google ke project Anda:
Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi
aplikasi atau modul Anda:
Groovy
dependencies { def work_version = "2.11.0" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.11.0" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
Untuk mengetahui cara menggunakan ekstensi Kotlin, lihat dokumentasi ktx.
Untuk informasi dependensi selengkapnya, lihat Menambahkan Dependensi Build.
Masukan
Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Versi 2.11
Versi 2.11.0
22 Oktober 2025
androidx.work:work-*:2.11.0 dirilis. Versi 2.11.0 berisi commit ini.
Perubahan penting sejak versi 2.10.0:
minSdktelah diupdate dari API 21 ke API 23.- API
setRemoteSessionTimeoutMillisdi builder KonfigurasiWorkManagertelah ditambahkan untuk memungkinkan konfigurasi durasi sesiRemoteWorkManagertetap aktif sejak penggunaan terakhirnya.
Versi 2.11.0-rc01
8 Oktober 2025
androidx.work:work-*:2.11.0-rc01 dirilis. Versi 2.11.0-rc01 berisi commit ini.
Versi 2.11.0-beta01
24 September 2025
androidx.work:work-*:2.11.0-beta01 dirilis. Versi 2.11.0-beta01 berisi commit ini.
Perubahan API
- Menambahkan
stopRunningWorkWithReasonkeWorkManagerTestDriver. (Ie53b2, b/439955564)
Perbaikan Bug
- Memperbaiki penghentian layanan latar depan saat ada perintah tertunda (Iae822, b/432069314)
- Memperbaiki kegagalan pekerja coroutine jarak jauh untuk melepaskan ikatan layanan jarak jauh (I842f2, b/247113322)
Versi 2.11.0-alpha01
27 Agustus 2025
androidx.work:work-*:2.11.0-alpha01 dirilis. Versi 2.11.0-alpha01 berisi commit ini.
Perubahan API
- minSdk telah diupdate dari API 21 ke API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- API
setRemoteSessionTimeoutMillisdi builder Konfigurasi WorkManager telah ditambahkan untuk memungkinkan konfigurasi durasi sesi RemoteWorkManager tetap aktif sejak penggunaan terakhirnya. (Ib23c8) - Menambahkan API eksperimental di
WorkRequest.Builderuntuk menerapkan penundaan saat pekerjaan terganggu oleh sistem. (Ie2dc7, b/335513480) - Menambahkan API pengujian untuk meneruskan class pekerja yang berbeda ke
TestListenableWorkerBuilderdaripada class yang sedang dibuat untuk mendukung implementasiWorkerFactorykustom (If6bff, b/389154854)
Perbaikan Bug
- Meng-cache kemampuan jaringan di
SharedNetworkCallbackuntuk mencegah IPC yang tidak perlu (Ie4027, b/427115602) - Memperbaiki masalah pada evaluasi batasan jaringan saat item kerja setelah yang pertama tidak mendapatkan kemampuan jaringan saat ini dan malah mengalami
ConstraintsNotMetsetelah waktu tunggu (Ib6a66, b/427115602)
Versi 2.10
Versi 2.10.5
24 September 2025
androidx.work:work-*:2.10.5 dirilis. Versi 2.10.5 berisi commit ini.
Perbaikan Bug
- Memperbaiki penghentian layanan latar depan saat ada perintah tertunda (Iae822, b/432069314)
Versi 2.10.4
10 September 2025
androidx.work:work-*:2.10.4 dirilis. Versi 2.10.4 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah terkait kegagalan
RemoteCoroutineWorkeruntuk melepaskan layanan jarak jauh (I842f2, b/247113322)
Versi 2.10.3
30 Juli 2025
androidx.work:work-*:2.10.3 dirilis. Versi 2.10.3 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah ketika pekerja dengan batasan jaringan yang identik dengan pekerja sebelumnya akan melaporkan bahwa batasan mereka tidak terpenuhi. (b/427115602).
Versi 2.10.2
18 Juni 2025
androidx.work:work-*:2.10.2 dirilis. Versi 2.10.2 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat mempertahankan pekerja dengan permintaan jaringan dan kemampuan default yang akan menyebabkan kemampuan yang dihapus ditambahkan kembali sehingga menyebabkan pekerja dengan batasan jaringan berperilaku tidak semestinya. (b/409716532)
- Memperbaiki bug yang menyebabkan pekerja dengan batasan jaringan tidak dieksekusi dengan cepat karena batasan tidak terpenuhi meskipun jaringan dan kemampuan tersedia. (b/423403088)
Versi 2.10.1
23 April 2025
androidx.work:work-*:2.10.1 dirilis. Versi 2.10.1 berisi commit ini.
Perbaikan Bug
- Mengurangi kemungkinan
TooManyRequestsExceptionditampilkan dari pendaftaranWorkManageruntukNetworkCallbackyang digunakan untuk pelacakan batasan. (b/231499040, b309d5).
Versi 2.10.0
30 Oktober 2024
androidx.work:work-*:2.10.0 dirilis. Versi 2.10.0 berisi commit ini.
Perubahan signifikan sejak versi 2.9.1
- Menambahkan tag rekaman aktivitas ke Jobs dari
WorkManageryang membuat ‘adb shell dumpsys jobscheduler’ jauh lebih mudah dipahami karena akan berisi nama Worker yang sedang dieksekusi. Bagian jejak juga ditambahkan di sekitar area pentingWorkManager. Configuration.workerCoroutineContextditambahkan untuk mengontrol dispatcher tempatCoroutineWorkerdieksekusi.- Developer dapat menentukan
NetworkRequestsebagai batasan untuk pekerja melalui metodeConstraints.setRequiredNetworkRequest. Hal ini memungkinkan kontrol yang lebih terperinci atas jaringan tempat pekerja ini harus berjalan. WorkManager2.10.0 kini dikompilasi dengan SDK 35 dan berisi berbagai perubahan untuk kompatibilitas SDK 35.
Versi 2.10.0-rc01
24 Oktober 2024
androidx.work:work-*:2.10.0-rc01 dirilis. Versi 2.10.0-rc01 berisi commit ini.
Versi 2.10.0-beta01
2 Oktober 2024
androidx.work:work-*:2.10.0-beta01 dirilis. Versi 2.10.0-beta01 berisi commit ini.
Versi 2.10.0-alpha04
18 September 2024
androidx.work:work-*:2.10.0-alpha04 dirilis. Versi 2.10.0-alpha04 berisi commit ini.
Perubahan API
- Tambahkan alasan penghentian
STOP_REASON_FOREGROUND_SERVICE_TIMEOUTsaat pekerja latar depan dihentikan karena waktu tunggu eksekusi habis berdasarkan jenis layanan latar depan. (Ibd0af)
Versi 2.10.0-alpha03
4 September 2024
androidx.work:work-*:2.10.0-alpha03 dirilis. Versi 2.10.0-alpha03 berisi commit ini.
Fitur Baru
- Menambahkan tag rekaman aktivitas ke Jobs dari
WorkManageryang membuat ‘adb shell dumpsys jobscheduler’ jauh lebih mudah dipahami karena akan berisi nama Worker yang sedang dieksekusi. Bagian jejak juga ditambahkan di sekitar area pentingWorkManager.
Perubahan API
- WorkManager 2.10.0 kini dikompilasi dengan SDK 35.
- Memperbaiki pekerja latar depan jenis ‘layanan singkat’ dan ‘sinkronisasi data’ yang mengalami waktu tunggu habis dan menyebabkan ANR saat
WorkManagertidak memanggilstopSelf(). Perbaikan ini hanya berlaku untuk perangkat dengan API 34 dan 35 tempat jenis layanan latar depan diperkenalkan. (ca06b2, b/364508145) - API
WorkerParametersbaru yang memungkinkan pengalihan proses jarak jauh yang terikat denganWorkersaat menggunakanWorkerFactory. (Ibdc8a, Ie8a90, I7373f)
Perbaikan Bug
- Memperbaiki error yang disebabkan oleh
WorkManageryang mencoba memulai ulang pekerja yang berjalan lama (yaitu pekerja latar depan) saat jenis latar depan tugas memiliki izin prasyarat Android 14 yang dicabut. (b/333957914) - Menghapus penentuan batas akses manual ke API platform baru karena hal ini terjadi secara otomatis melalui pemodelan API saat menggunakan R8 dengan AGP 7.3 atau yang lebih baru (misalnya, R8 versi 3.3) dan untuk semua build saat menggunakan AGP 8.1 atau yang lebih baru (misalnya, D8 versi 8.1). Klien yang tidak menggunakan AGP disarankan untuk mengupdate ke D8 versi 8.1 atau yang lebih baru. Baca artikel ini untuk informasi selengkapnya. (Ia60e0, b/345472586)
Versi 2.10.0-alpha02
17 April 2024
androidx.work:work-*:2.10.0-alpha02 dirilis. Versi 2.10.0-alpha02 berisi commit ini.
Perubahan API
- Menambahkan kemampuan untuk memancarkan rentang rekaman aktivitas melalui
@RestrictToTraceryang dapat dikonfigurasi diWorkManager. (I17d7f, b/260214125) Configuration.workerCoroutineContextditambahkan untuk mengontrol dispatcher tempatCoroutineWorkerdieksekusi. Hal ini membantu menghindari penggunaanDispatchers.Defaultsepenuhnya diWorkManager. (Icd1b7)- Menambahkan pengendali pengecualian kustom untuk Pekerja (Ib1b74, b/261190695)
OneTimeWorkRequest.BuilderdanPeriodicWorkRequest.Builderkini dapat dibuat denganKClass, bukanClass:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()(Ib55f6)- Class
WorkManagerdimigrasikan ke Kotlin. Sekarang, metode yang menampilkanLiveData,ListenableFuture, atauFlowmemberikan informasi nullability yang benar. Hal ini dapat memerlukan perubahan pada kode sumber klien, jika asumsi nullability dalam kode tersebut salah. (If6757)
Versi 2.10.0-alpha01
24 Januari 2024
androidx.work:work-*:2.10.0-alpha01 dirilis. Versi 2.10.0-alpha01 berisi commit ini.
Fitur Baru
- Developer dapat menentukan
NetworkRequestsebagai batasan untuk pekerja melalui metodeConstraints.setRequiredNetworkRequest. Hal ini memungkinkan kontrol yang lebih terperinci atas jaringan tempat pekerja ini harus berjalan.
Perubahan API
- Menambahkan kemampuan untuk menentukan
NetworkRequestsebagai batasan. (Id98a1, b/280634452)
Versi 2.9
Versi 2.9.1
7 Agustus 2024
androidx.work:work-*:2.9.1 dirilis. Versi 2.9.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki error yang disebabkan oleh
WorkManageryang mencoba memulai ulang pekerja yang berjalan lama (yaitu pekerja latar depan) saat jenis latar depan tugas memiliki izin prasyarat Android 14 yang dicabut. (b/333957914)
Versi 2.9.0
29 November 2023
androidx.work:work-*:2.9.0 dirilis. Versi 2.9.0 berisi commit ini.
Perubahan penting sejak versi 2.8.0
- Kemampuan observasi melalui
Flow. DaripadaLiveData, progres Pekerja kini dapat diamati melalui Flow melaluiWorkManager.getWorkInfosFlowdan metode serupa. - Sekarang
WorkManagermemberikan petunjuk tentang alasan worker sebelumnya dihentikan. ID ini dapat dikueri dari pekerja itu sendiri melalui metodegetStopReason()atau dariWorkInfomelaluigetStopReason(). - Penjadwalan yang akurat untuk pekerja berkala melalui
setNextScheduleTimeOverride. Hal ini memungkinkan penghitungan dinamis jadwal kerja Berkala berikutnya, yang dapat digunakan untuk menerapkan fitur lanjutan seperti waktu refresh adaptif, perilaku percobaan ulang kustom, atau membuat pekerja feed berita berjalan sebelum pengguna bangun setiap pagi tanpa penyimpangan.ExistingPeriodicWorkPolicy.UPDATEharus digunakan dengan teknik ini untuk menghindari pembatalan pekerja yang sedang berjalan saat menjadwalkan pekerja berikutnya. - Pengujian WorkManager dengan threading yang cocok untuk produksi.
ExecutorsMode.PRESERVE_EXECUTORSdapat digunakan diinitializeTestWorkManageruntuk mempertahankan setelan eksekutor diConfigurationdan menggunakan thread utama yang sebenarnya. - API Coroutine seperti
CoroutineWorkertelah dipindahkan dari artefak tambahan work-runtime-ktx ke artefak utama work-runtime. work-runtime-ktx kini kosong.
Perubahan API
stopReasontelah ditambahkan keWorkInfo. Hal ini membuatstopReasontersedia setelah pekerja berjalan. Hal ini dapat membantu pelaporanstopReasondengan cara yang dapat digunakan, karena setelah pekerja dihentikan, aplikasi itu sendiri dapat dihentikan dengan sangat cepat. (I21386)- Izinkan
Clockditetapkan melalui konfigurasi dan digunakan untuk mendorong pengurutan eksekusi pengujian Pekerja. (Ic586e) - Metode
getStopReason()telah ditambahkan keListenableWorkeryang memberikan petunjuk mengapa pekerja dihentikan. (I07060) - Menambahkan
WorkManagerTestInitHelper#closeWorkDatabase()untuk menghindari peringatan Closeguard tentang kebocoran resource. (Ia8d49) - Konstruktor
WorkInfokini bersifat publik, yang dapat berguna dalam pengujian. (Ia00b6, b/209145335) work-runtime-ktxkini kosong,CoroutineWorkerdan utilitas khusus Kotlin lainnya kini tersedia di artefak work-runtime utama. (I71a9a)- Menambahkan metode
setNextScheduleTimeOverride, yang memungkinkan setelan akurat untuk jadwal pekerjaan berkala (I3b4da) - Menambahkan
getNextScheduleTimeMillisuntuk mendapatkan info waktu proses terjadwal ditambahkan keWorkInfo. (I797e4) - Info penundaan awal dan periodisitas ditambahkan ke
WorkInfo. (I52f2f) - Menambahkan metode pengamatan pekerja melalui Flow melalui metode
getWorkInfosByTagFlow,getWorkInfoByIdFlow,getWorkInfosForUniqueWorkFlow,getWorkInfosFlow(If122a) - Menambahkan anotasi
@RequiresApi(...)yang tidak ada ke konstruktor dan propertiConstraints. Sekarang, anotasi ini selaras dengan anotasi yang sesuai pada setter diConstraints.Builderyang ada sejak versi awalWorkManager. (I6d7d2) WorkManagerkini memiliki batas terpisah untuk pekerja URI konten guna memberi mereka slot yang dijamin diJobScheduleruntuk mencegah hilangnya update konten saat beban tinggi. Batas dapat dikonfigurasi melaluiConfiguration.Builder.setContentUriTriggerWorkersLimit. (Ic128f)- Batasan ditambahkan ke
WorkInfo. (I162c0)
Versi 2.9.0-rc01
18 Oktober 2023
androidx.work:work-*:2.9.0-rc01 dirilis. Versi 2.9.0-rc01 berisi commit ini.
- Tidak ada perubahan sejak rilis beta terakhir
Versi 2.9.0-beta01
6 September 2023
androidx.work:work-*:2.9.0-beta01 dirilis. Versi 2.9.0-beta01 berisi commit ini.
Perubahan API
- Menambahkan konstanta untuk alasan penghentian yang ditampilkan oleh
WorkInfo.stopReasondanListenableWorker.stopReason(I0cc00)
Versi 2.9.0-alpha02
26 Juli 2023
androidx.work:work-*:2.9.0-alpha02 dirilis. Versi 2.9.0-alpha02 berisi commit ini.
Fitur Baru
- Sekarang
WorkManagermemberikan petunjuk tentang alasan worker sebelumnya dihentikan. ID ini dapat dikueri dari pekerja itu sendiri melalui metodegetStopReason()atau dariWorkInfomelaluigetStopReason().
Perubahan API
stopReasontelah ditambahkan keWorkInfo. MembuatstopReasontersedia setelah pekerja berjalan. Hal ini dapat membantu dalam pelaporanstopReasondengan cara yang dapat digunakan, karena setelah pekerja dihentikan, aplikasi itu sendiri dapat dihentikan dengan sangat cepat. (I21386)- Izinkan Setelan Waktu ditetapkan melalui konfigurasi dan digunakan untuk mendorong pengurutan eksekusi pengujian Pekerja. (Ic586e)
- Metode
getStopReason()telah ditambahkan keListenableWorkeryang memberikan petunjuk mengapa pekerja dihentikan. (I07060) - Menambahkan
WorkManagerTestInitHelper#closeWorkDatabase()untuk menghindari peringatan Closeguard tentang kebocoran resource. (Ia8d49)
Perbaikan Bug
- Menambahkan kemampuan untuk melewati
overrideNextScheduleTimemenggunakanTestDriverdan memperbaiki masalah dengan kemampuan pengujian. (Ic2905)
Versi 2.9.0-alpha01
7 Juni 2023
androidx.work:work-*:2.9.0-alpha01 dirilis. Versi 2.9.0-alpha01 berisi commit berikut.
Fitur Baru
- Kemampuan observasi melalui
Flow. DaripadaLiveData, progres Pekerja kini dapat diamati melalui Flow melaluiWorkManager.getWorkInfosFlowdan metode serupa. - Penjadwalan yang akurat untuk pekerja berkala melalui
setNextScheduleTimeOverride. Hal ini memungkinkan penghitungan dinamis jadwal kerja Berkala berikutnya, yang dapat digunakan untuk menerapkan fitur lanjutan seperti waktu refresh adaptif, perilaku percobaan ulang kustom, atau membuat pekerja feed berita berjalan sebelum pengguna bangun setiap pagi tanpa penyimpangan.ExistingPeriodicWorkPolicy.UPDATEharus digunakan dengan teknik ini untuk menghindari pembatalan pekerja yang sedang berjalan saat menjadwalkan pekerja berikutnya. - Pengujian
WorkManagerdengan threading yang cocok dengan produksi.ExecutorsMode.PRESERVE_EXECUTORSdapat digunakan untuk mempertahankan setelan eksekutor diConfigurationdan menggunakan thread utama yang sebenarnya. - API Coroutine seperti
CoroutineWorkertelah dipindahkan dari artefak tambahanwork-runtime-ktxke artefak utamawork-runtime.work-runtime-ktxsekarang kosong.
Perubahan API
- Konstruktor
WorkInfokini bersifat publik, yang dapat berguna dalam pengujian. (Ia00b6, b/209145335) work-runtime-ktxkini kosong,CoroutineWorkerdan utilitas khusus kotlin lainnya kini tersedia di artefakwork-runtimeutama. (I71a9a)- Menambahkan metode
setNextScheduleTimeOverride, yang memungkinkan setelan akurat untuk jadwal pekerjaan berkala (I3b4da) - Mengganti nama
getEarliestRunTimeMillismenjadigetNextScheduleTimeMillis. (I2bd7a) - Info waktu eksekusi terjadwal berikutnya ditambahkan ke
WorkInfo. (I797e4) - Info penundaan awal dan periodisitas ditambahkan ke
WorkInfo. (I52f2f) - Menambahkan metode pengamatan pekerja melalui Flow melalui metode
getWorkInfosByTagFlow,getWorkInfoByIdFlow,getWorkInfosForUniqueWorkFlow,getWorkInfosFlow(If122a) - Menambahkan anotasi
@RequiresApi(...)yang tidak ada ke konstruktor dan properti Constraints. Sekarang, anotasi ini selaras dengan anotasi yang sesuai pada setter diConstraints.Builderyang ada sejak versi awalWorkManager. (I6d7d2) WorkManagerkini memiliki batas terpisah untuk pekerja URI konten guna memberi mereka slot yang dijamin diJobScheduleruntuk mencegah hilangnya update konten saat beban tinggi. Batas dapat dikonfigurasi melaluiConfiguration.Builder.setContentUriTriggerWorkersLimit. (Ic128f)- Batasan ditambahkan ke
WorkInfo. (I162c0)
Versi 2.8
Versi 2.8.1
22 Maret 2023
androidx.work:work-*:2.8.1 dirilis. Versi 2.8.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki ANR di
RescheduleReceiveryang sebelumnya tidak menangani dua siaran serentak dengan benar. (b/236906724)
Versi 2.8.0
8 Februari 2023
androidx.work:work-*:2.8.0 dirilis. Versi 2.8.0 berisi commit ini.
Perubahan penting sejak versi 2.7.0
Fitur Baru
- Kemampuan untuk memperbarui
WorkRequestsdengan cara yang tidak mengganggu telah ditambahkan, sehingga mempertahankan waktu antrean asli, perantaian, dll. Lihat postingan blog yang mendetail tentang fitur ini, serta javadocs untukWorkManager.updateWorkdanExistingPeriodicWorkPolicy.UPDATEuntuk detail selengkapnya.
Perubahan API
WorkManager.updateWorkditambahkan untuk memperbarui pekerjaan yang mempertahankan waktu antrean asli dan perantaiannya. (I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATEtelah ditambahkan. Kebijakan ini memungkinkan pembaruan pekerjaan berkala menurut namanya. Hal ini mirip denganREPLACEyang ada, tetapi tidak terlalu mengganggu: tidak membatalkan pekerja jika sedang berjalan dan mempertahankan waktu antrean - penundaan dan periode awal dihitung dari waktu antrean asli, bukan waktu pembaruan.REPLACEtidak digunakan lagi untuk mengurangi kebingungan antaraREPLACEdanUPDATEyang memiliki nama sangat mirip. Jika Anda masih ingin mempertahankan semantik sebelumnya dariREPLACE,CANCEL_AND_REENQUEUEyang baru ditambahkan dan identik denganREPLACEdapat digunakan. (I985ed, b/219446409)- Menambahkan kemampuan untuk mengintersep pengecualian penjadwalan yang menyediakan
Consumer<Throwable>melalui setSchedulingExceptionHandler) - Menambahkan kemampuan untuk menyediakan
Consumer<Throwable>melalui setInitializationExceptionHandler untuk menentukan apakah terdapat masalah saat mencoba menginisialisasi WorkManager. - Helper inline untuk
OneTimeWorkRequest&PeriodicWorkRequestdipindahkan dariandroidx.work:work-runtime-ktxkeandroidx.work:work-runtime(I0010f, b/209145335) - Metode helper
WorkQuery.fromIds,WorkQuery.fromStates,WorkQuery.fromUniqueWorkNames,WorkQuery.fromTagsditambahkan untuk membuatWorkQuerysecara langsung. (b/199919736) (If48f2, b/199919736) - Menambahkan
getForegroundInfokeWorker. (Ic1ead) RxWorkeruntuk RxJava 2 dan RxJava 3 kini memilikisetForegroundyang menampilkanCompletableyang dapat digunakan sebagai penggantisetForegroundInfoAsyncyang menampilkanListenableFutureRxWorkeruntuk RxJava 2 dan RxJava 3 memilikigetForegroundInfoyang menampilkanSingleyang dapat digunakan sebagai penggantigetForegroundInfoAsyncyang menampilkanListenableFuture. (b/203851459)- Batasan kini dapat dibuat secara langsung, bukan menggunakan
Constraints.Builder, yang mudah bagi pengguna Kotlin. (Idc390, b/137568653) - Menambahkan kemampuan untuk memeriksa apakah
WorkManagertelah diinisialisasi. Selain itu, menambahkangetConfiguration()API baru untuk developer library guna mendapatkan konfigurasi yang diinisialisasi denganWorkManager. (I6eff3, b/212300336)
Perbaikan Bug
- Memperbaiki masalah pada penjadwal dengan beban tinggi yang akan mencegah pekerja segera berjalan saat berada di bawah beban. (I9686b, b/248111307)
- Menambahkan
@RequiresPermissionke API yang memerlukan pemberian izinPOST_NOTIFICATIONSdi SDK 33 dan yang lebih baru. (Ie542e, b/238790278) - Memperluas pembatalan di
CoroutineScopekeListenableFuturesaat menggunakansuspendCancellableCoroutine.
Versi 2.8.0-rc01
7 Desember 2022
androidx.work:work-*:2.8.0-rc01 dirilis. Versi 2.8.0-rc01 berisi commit ini.
Fitur Baru
- Tidak ada fitur baru pada rilis ini. Umumnya ini adalah lonjakan versi
Versi 2.8.0-beta02
9 November 2022
androidx.work:work-*:2.8.0-beta02 dirilis. Versi 2.8.0-beta02 berisi commit ini.
Perbaikan Bug
- Memperbaiki metode
equalsdiWorkInfoyang sebelumnya tidak memperhitungkan informasi pembuatan baru. (4977cc)
Versi 2.8.0-beta01
5 Oktober 2022
androidx.work:work-*:2.8.0-beta01 dirilis. Versi 2.8.0-beta01 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah pada penjadwal dengan beban tinggi yang akan mencegah pekerja segera berjalan saat berada di bawah beban. (I9686b, b/248111307)
Versi 2.8.0-alpha04
7 September 2022
androidx.work:work-*:2.8.0-alpha04 dirilis. Versi 2.8.0-alpha04 berisi commit ini.
Perubahan API
WorkerInfo.getGeneration()danWorkerParameters.getGeneration()telah ditambahkan dan akan menampilkan generasi pekerja. Pekerja memiliki beberapa generasi, jika diperbarui melaluiWorkManager.updateWorkatauWorkManager.enqueueUniquePeriodicWorkmenggunakanExistingPeriodicWorkPolicy.UPDATE. Perlu diingat bahwa jika pekerja sedang berjalan, metode ini dapat menampilkan generasi yang lebih baru dari pekerja yang sedang berjalan saat update terjadi selama eksekusi pekerja. (I665c5, b/219446409) (I128a9, b/219446409)- Menambahkan
InitializationExceptionHandler, Pengendali Pengecualian yang dapat digunakan untuk menentukan apakah terdapat masalah saat mencoba melakukan inisialisasiWorkManager. (I061de)
Versi 2.8.0-alpha03
10 Agustus 2022
androidx.work:work-*:2.8.0-alpha03 dirilis. Versi 2.8.0-alpha03 berisi commit ini.
Fitur Baru
- Kemampuan untuk memperbarui
WorkRequestsdengan cara yang tidak mengganggu telah ditambahkan, sehingga mempertahankan waktu antrean asli, perantaian, dll. LihatWorkManager.updateWorkdanExistingPeriodicWorkPolicy.UPDATEuntuk detail selengkapnya.
Perubahan API
WorkManager.updateWorkditambahkan untuk memperbarui pekerjaan yang mempertahankan waktu antrean asli dan perantaiannya. (I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATEtelah ditambahkan. Kebijakan ini memungkinkan pembaruan tugas berkala menurut namanya. Ini mirip denganREPLACEyang ada, tetapi tidak terlalu mengganggu: tidak membatalkan pekerja jika sedang berjalan dan mempertahankan waktu antrean - penundaan dan periode awal dihitung dari waktu antrean asli, bukan waktu pembaruan.REPLACEtidak digunakan lagi untuk mengurangi kebingungan antaraREPLACEdanUPDATEyang memiliki nama sangat mirip. Jika Anda masih ingin mempertahankan semantik sebelumnya dariREPLACE,CANCEL_AND_REENQUEUEyang baru ditambahkan dan identik denganREPLACEdapat digunakan. (I985ed, b/219446409)- Menambahkan kemampuan untuk mengintersep pengecualian penjadwalan dengan menentukan
SchedulingExceptionHandler. (I033eb) - Helper inline untuk
OneTimeWorkRequest&PeriodicWorkRequestdipindahkan dariandroidx.work:work-runtime-ktxkeandroidx.work:work-runtime(I0010f, b/209145335)
Perbaikan Bug
- Menambahkan
@RequiresPermissionke API yang memerlukan pemberian izin POST_NOTIFICATIONS pada SDK 33 dan yang lebih baru. (Ie542e, b/238790278)
Versi 2.8.0-alpha02
6 April 2022
androidx.work:work-*:2.8.0-alpha02 dirilis. Versi 2.8.0-alpha02 berisi commit ini.
Perubahan API
- Batasan kini dapat dibuat secara langsung, bukan menggunakan Builder, yang mudah bagi pengguna Kotlin. (Idc390, b/137568653)
- Menambahkan kemampuan untuk memeriksa apakah
WorkManagertelah diinisialisasi. Selain itu, menambahkangetConfiguration()API baru untuk developer library guna mendapatkan konfigurasi yang diinisialisasi denganWorkManager. (I6eff3, b/212300336)
Versi 2.8.0-alpha01
12 Januari 2022
androidx.work:work-*:2.8.0-alpha01 dirilis. Versi 2.8.0-alpha01 berisi commit berikut.
Perubahan API
- Metode helper
WorkQuery.fromStates,WorkQuery.fromUniqueWorkNames,WorkQuery.fromTagsditambahkan untuk membuat WorkQuery secara langsung. (If48f2, b/199919736) - Menambahkan metode BuildCompat eksperimental untuk SDK mendatang (Iafd82, b/207528937)
- Menambahkan
getForegroundInfokeWorker. (Ic1ead) - Metode helper
WorkQuery.fromIdsuntuk membuat WorkQuery langsung dari ID ditambahkan. (Ie5bdf, b/199919736) - RxWorker sekarang memiliki
setForegroundyang menampilkanCompletableyang dapat digunakan sebagai gantisetForegroundInfoAsyncyang menampilkanListenableFuture. (I85156) - RxWorker untuk RxJava 2 sekarang memiliki
getForegroundInfoyang menampilkanSingleyang dapat digunakan sebagai gantigetForegroundInfoAsyncyang menampilkanListenableFuture. (I21c91, b/203851459) - RxWorker untuk RxJava 3 sekarang memiliki
getForegroundInfoyang menampilkanSingleyang dapat digunakan sebagai gantigetForegroundInfoAsyncyang menampilkanListenableFuture. (I1ca8a) - RxWorker sekarang memiliki
setForegroundyang menampilkanCompletableyang dapat digunakan sebagai gantisetForegroundInfoAsyncyang menampilkanListenableFuture. (I992a3, b/203851459)
Perbaikan Bug
- Memperluas pembatalan di
CoroutineScopekeListenableFuturesaat menggunakansuspendCancellableCoroutine. (I77e63)
Versi 2.7
Versi 2.7.1
17 November 2021
androidx.work:work-*:2.7.1 dirilis. Versi 2.7.1 berisi commit ini.
Perbaikan Bug
- Pembatalan di
CoroutineScopedisebarkan keListenableFuturesaat menggunakansuspendCancellableCoroutine. (I77e63) - Pengecualian akan segera ditampilkan saat permintaan pekerjaan yang tertunda ditandai sebagai prioritas. bef1762
Versi 2.7.0
13 Oktober 2021
androidx.work:work-*:2.7.0 dirilis. Versi 2.7.0 berisi commit ini.
Perubahan penting sejak 2.6.0
WorkManager memperkenalkan
WorkRequest.Builder.setExpedited(...)API baru untuk membantu terkait pembatasan Layanan Latar Depan di Android 12.Saat menggunakan
setExpedited(...), WorkManager mendelegasikan ke tugas yang diprioritaskan di JobScheduler mulai Android 12, sekaligus menyediakan kompatibilitas mundur pada versi Android sebelumnya dengan melakukan delegasi ke Layanan Latar Depan.
Versi 2.7.0-rc01
29 September 2021
androidx.work:work-*:2.7.0-rc01 dirilis. Versi 2.7.0-rc01 berisi commit ini.
Versi ini sama persis dengan androidx.work:work-*:2.7.0-beta01.
Versi 2.7.0-beta01
1 September 2021
androidx.work:work-*:2.7.0-beta01 dirilis. Versi 2.7.0-beta01 berisi commit ini.
Fitur Baru
- Mengurangi pertentangan resource SQLite multiproses saat melakukan inisialisasi WorkManager.
Perubahan API
- Menghapus
@ExperimentalExpeditedWorkAPI mengingat API platform yang mendasarinya sudah stabil untuk Android 12 (S). (aosp/1792806)
Perbaikan Bug
- Memberikan pesan error yang lebih baik untuk pekerja yang diprioritaskan yang tidak mengimplementasikan
getForegroundInfoAsync(). (aosp/1809376)
Versi 2.7.0-alpha05
21 Juli 2021
androidx.work:work-*:2.7.0-alpha05 dirilis. Versi 2.7.0-alpha05 berisi commit ini.
Rilis ini juga berisi perbaikan bug dari rilis WorkManager 2.6.0-beta02.
Versi 2.7.0-alpha04
2 Juni 2021
androidx.work:work-*:2.7.0-alpha04 dirilis.
Rilis ini juga berisi perubahan dari rilis 2.6.0-beta01.
Perubahan API
ListenableWorker.setForegroundAsync()tidak digunakan lagi.- Sebaiknya gunakan
WorkRequest.Builder.setExpedited(...)API jika memungkinkan. Untuk lebih mendukung situasi saat aplikasi tidak tunduk pada pembatasan layanan latar depan, developer dapat menggunakanListenableWorker.setForegroundAsync()API. - Jika
ListenableWorker.setForegroundAsync()dipanggil, saat aplikasi tunduk pada pembatasan layanan latar depan, tindakan ini akan menampilkan ForegroundServiceStartNotAllowedException.
Perbaikan Bug
- Jika tugas yang diprioritaskan dijadwalkan ulang, tugas tersebut tidak lagi diprioritaskan. Tugas tersebut menjadi tugas reguler.
Versi 2.7.0-alpha03
21 April 2021
androidx.work:work-*:2.7.0-alpha03 dirilis. Versi 2.7.0-alpha03 berisi commit ini.
Fitur Baru
Dari WorkManager
2.6.0-alpha02: Menambahkan dukungan untuk Worker yang dapat berjalan di proses apa pun. (Iaf200)Dari WorkManager
2.6.0-alpha02: MenambahkanRemoteCoroutineWorkeryang merupakan implementasiRemoteListenableWorkeryang dapat diikat ke proses jarak jauh. (I30578)
Perubahan API
- Dari WorkManager
2.6.0-alpha02: Menambahkan dukungan untuk batasan jaringanTEMPORARILY_UNMETERED. (I08d5e) - Dari WorkManager
2.6.0-alpha02: Dukungan pekerja multiproses untuksetProgressAsync(). (Ib6d08) - Dari WorkManager
2.6.0-alpha02: MembuatWorkManagerInitializermenjadi publik sehinggaandroidx.startup.Initializerlainnya dapat menggunakan ini sebagai dependensi. (I5ab11)
Versi 2.7.0-alpha02
10 Maret 2021
androidx.work:work-*:2.7.0-alpha02 dirilis. Versi 2.7.0-alpha02 berisi commit ini.
Perbaikan Bug
- Membuat mutabilitas
PendingIntentmenjadi eksplisit, untuk memperbaiki error saat menargetkan Android 12. (b/180884673)
Versi 2.7.0-alpha01
18 Februari 2021
androidx.work:work-*:2.7.0-alpha01 dirilis. Versi 2.7.0-alpha01 berisi commit ini.
Fitur Baru
WorkManager memperkenalkan
WorkRequest.Builder.setExpedited(...)API baru untuk mempertimbangkan pembatasan Layanan latar depan di Android 12.Aplikasi tidak dapat lagi meluncurkan layanan latar depan saat aplikasi berada di latar belakang. Oleh karena itu, untuk lebih mendukung pekerjaan berdurasi panjang yang sebelumnya terikat dengan siklus proses layanan latar depan, aplikasi dapat menandai
WorkRequestsebagai diprioritaskan.API ini adalah pengganti API
setForegroundAsync(...)/setForeground(...)yang sekarang tidak digunakan lagi.Saat menggunakan
setExpedited(...), WorkManager mendelegasikan ke tugas yang diprioritaskan diJobSchedulermulai Android 12, sekaligus menyediakan kompatibilitas mundur pada versi Android sebelumnya dengan melakukan delegasi ke layanan latar depan.
Perubahan API
- Menambahkan dukungan untuk
WorkRequestyang diprioritaskan.
Versi 2.6.0
Versi 2.6.0
1 September 2021
androidx.work:work-*:2.6.0 dirilis. Versi 2.6.0 berisi commit ini.
Perubahan penting sejak versi 2.5.0
WorkManager kini menggunakan
androidx.startupuntuk melakukan inisialisasi WorkManager. Jika sebelumnya Anda menggunakantools:node="remove"yang digunakanContentProvideruntuk melakukan inisialisasi WorkManager sebelumnya, maka Anda harus melakukan hal berikut.<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" />Menambahkan dukungan untuk Worker yang dapat berjalan di proses apa pun. (Iaf200)
Menambahkan
RemoteCoroutineWorkeryang merupakan implementasi RemoteListenableWorker yang dapat diikat ke proses jarak jauh. (I30578)
Versi 2.6.0-rc01
4 Agustus 2021
androidx.work:work-*:2.6.0-rc01 dirilis. Versi 2.6.0-rc01 berisi commit berikut ini.
Versi ini sama persis dengan androidx.work:work-*:2.6.0-beta02.
Versi 2.6.0-beta02
21 Juli 2021
androidx.work:work-*:2.6.0-beta02 dirilis. Versi 2.6.0-beta02 berisi commit ini.
Perbaikan Bug
RemoteWorkManagersekarang terlepas dengan benar dariRemoteWorkManagerServiceyang memungkinkanRemoteWorkManagerServicemelakukan pembersihan dengan benar. aosp/1730694RemoteListenableWorkersekarang terlepas dengan benar dariRemoteWorkerServiceyang memungkinkanRemoteWorkerServicemelakukan pembersihan dengan benar. aosp/1743817ForceStopRunnablekini hanya berjalan dalam proses aplikasi utama. Ini adalah pengoptimalan, dan menghindari pertentangan resource untuk aplikasi yang menggunakan beberapa proses. aosp/1749180, aosp/1761729
Versi 2.6.0-beta01
2 Juni 2021
androidx.work:work-*:2.6.0-beta01 dirilis. Versi 2.6.0-beta01 berisi commit ini.
Rilis ini berisi beberapa peningkatan kecil pada dokumentasi. Sebagian besar rilisnya mirip dengan 2.6.0-alpha02.
Versi 2.6.0-alpha02
21 April 2021
androidx.work:work-*:2.6.0-alpha02 dirilis. Versi 2.6.0-alpha02 berisi commit ini.
Fitur Baru
Menambahkan dukungan untuk Worker yang dapat berjalan di proses apa pun. (Iaf200)
Menambahkan
RemoteCoroutineWorkeryang merupakan implementasiRemoteListenableWorkeryang dapat diikat ke proses jarak jauh. (I30578)
Perubahan API
- Menambahkan dukungan untuk batasan jaringan
TEMPORARILY_UNMETERED. (I08d5e) - Dukungan pekerja multiproses untuk
setProgressAsync(). (Ib6d08) - Membuat
WorkManagerInitializermenjadi publik sehinggaandroidx.startup.Initializerlainnya dapat menggunakan ini sebagai dependensi. (I5ab11)
Versi 2.6.0-alpha01
24 Maret 2021
androidx.work:work-*:2.6.0-alpha01 dirilis. Versi 2.6.0-alpha01 berisi commit berikut.
Fitur Baru
WorkManagerkini menggunakanandroidx.startupuntuk menginisialisasi WorkManager. Sebelumnya, ini dilakukan olehandroidx.work.impl.WorkManagerInitializer. (aosp/1608813)Jika sebelumnya Anda menggunakan
tools:node="remove"yang digunakanContentProvideruntuk melakukan inisialisasi siklus proses, Anda harus melakukan hal berikut.<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>(atau)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Perubahan API
- Menambahkan
Result.getOutputData()API yang menampilkanoutputDataListenableWorker. (Ie51e3)
Perbaikan Bug
- Menambahkan solusi untuk bug OEM yang menyebabkan
SecurityExceptionditampilkan saat menggunakanAlarmManagerAPI. (aosp/1587518)
Versi 2.5.0
Versi 2.5.0
27 Januari 2021
androidx.work:work-*:2.5.0 dirilis. Versi 2.5.0 berisi commit ini.
Perubahan utama sejak versi 2.4.0
- Artefak
:work:work-multiprocessbaru untuk aplikasi yang menggunakan beberapa proses. Ini memperkenalkan peningkatan performa dengan menyatukan penjadwalan permintaan pekerjaan menjadi satu proses.- Untuk menggunakan
work-multiprocess, tentukan dependensi pada:implementation "androidx.work:work-multiprocess:2.5.0" - Tentukan proses utama menggunakan Configuration.Builder.setDefaultProcessName(String).
- Saat menggunakan
work-multiprocess, Anda juga ingin menggunakan RemoteWorkManager untuk mengelolaWorkRequest. RemoteWorkManager selalu menjangkau proses yang ditetapkan. Penjadwal dalam proses juga berjalan di proses yang ditetapkan.
- Untuk menggunakan
- Terkadang,
ActivityManagertidak dapat membuat instanceJobServiceuntuk memulai tugas. Hal ini menyebabkan tugas dasar dihentikan secara diam-diam karena bug platform.WorkManagerkini memastikan adanya tugas cadangan untuk setiapWorkRequestketikaApplicationsedang diinisialisasi oleh tugas yang direkonsiliasi. Ini sangat meningkatkan keandalan eksekusi tugas. (b/172475041, aosp/1489577) WorkManagermembatasi pertumbuhan database dengan mengurangi durasi buffering yang dilacakWorkRequestsetelahWorkRequestselesai. Durasinya adalah7hari sebelumnya. Ini telah dikurangi menjadi1hari + durasi keepResultsForAtLeast. (aosp/1419708)TestListenableWorkerBuilderkini mendukung class nyata yang mencakupListenableWorkeruntuk mempermudah pengujian. (aosp/1443299, b/169787349)- WorkManager inspector kini tersedia saat menggunakan Android Studio Arctic Fox.
Versi 2.5.0-rc01
13 Januari 2021
androidx.work:work-*:2.5.0-rc01 dirilis. Versi 2.5.0-rc01 berisi commit ini.
Perbaikan Bug
- Memperbaiki bug ketika
getWorkInfosLiveDatatidak tervalidasi dengan benar setelah entity diubah saat menggunakan API berbasisWorkQuery. (aosp/1540566, b/173769028) - Memperbaiki bug saat transaksi database tidak ditandai sebagai berhasil dalam beberapa kasus yang jarang terjadi. Ini menyebabkan masalah di beberapa perangkat Motorola. (aosp/1535368, b/175944460)
- Memperbaiki bug untuk mengabaikan
NoSuchElementExceptionsaat mencoba terlepas dari proses yang mati. (aosp/1530589) - Meningkatkan
ConstraintTrackingWorkeruntuk hanya menghentikanListenableWorkerjika belum dihentikan. (aosp/1496844, b/172946965) - Memperbarui library androidx.work untuk menargetkan Java 8 (Ibd2f2)
Versi 2.5.0-beta02
2 Desember 2020
androidx.work:work-*:2.5.0-beta02 dirilis. Versi 2.5.0-beta02 berisi commit ini.
Perbaikan Bug
- Memperbaiki bug di
androidx.work:work-multiprocesssaat WorkManager tidak sengaja memblokir thread panggilan ketika mencoba mengikat ke proses yang ditentukan. (aosp/1475538) - Memperbaiki bug saat
PeriodicWorkRequesttidak direkonsiliasi dengan benar. (b/172475041, aosp/1489577) - Menambahkan solusi untuk bug platform saat menghentikan layanan latar depan ketika menggunakan API
setForeground*. (b/170924044, aosp/1489901)
Versi 2.5.0-beta01
28 Oktober 2020
androidx.work:work-*:2.5.0-beta01 dirilis. Versi 2.5.0-beta01 berisi commit ini.
Fitur Baru
WorkManagersecara otomatis men-throttle jumlahWorkRequestyang dapat diambil oleh penjadwal dalam proses. Permintaan tersebut masih dieksekusi dalam urutan FIFO. (aosp/1455228)WorkManagermencoba memulihkan saat datastore aplikasi dalam keadaan buruk. (aosp/1463103)
Perbaikan Bug
- Jika
ListenableWorkerterganggu, segera tandai denganENQUEUEDagar dapat dijadwalkan ulang. (aosp/1455618, b/170273988)
Versi 2.5.0-alpha03
14 Oktober 2020
androidx.work:work-*:2.5.0-alpha03 dirilis. Versi 2.5.0-alpha03 berisi commit ini.
Perubahan API
TestListenableWorkerBuilderdanTestWorkerBuildertidak menggunakan jenis raw. (I883ad, b/169787349)
Perbaikan Bug
- Menggunakan
ApplicationInfountuk menentukan nama proses aplikasi default. (b/168716641, aosp/1429950) - Memperbaiki aturan visibilitas untuk
RemoteWorkManagerdanRemoteWorkContinuation. API ini tidak lagi ditandai sebagai@Restricted. (aosp/1432091) - Memperbaiki aturan proguard untuk
:work:work-multiprocess. (aosp/1432091) - Memperbaiki siklus proses notifikasi untuk pekerjaan berdurasi panjang yang terikat dengan layanan latar depan. (b/168502234, aosp/1431331)
Versi 2.5.0-alpha02
16 September 2020
androidx.work:work-*:2.5.0-alpha02 dirilis. Versi 2.5.0-alpha02 berisi commit berikut ini.
Fitur Baru
- Menambahkan API ke WorkQuery agar dapat menggunakan
iduntuk mengkueriWorkInfo. (aosp/1412372, b/157335295) - WorkManager makin baik dalam mendukung aplikasi yang menggunakan beberapa proses dengan artefak baru (
androidx.work:work-multiprocess:*). Artefak baru ini membantu memecahkan beberapa masalah yang dialami aplikasi besar, termasuk:- WorkManager biasanya perlu diinisialisasi dalam setiap proses aplikasi. Hal ini tidak bagus karena akan meningkatkan pertentangan resource SQLite yang pada akhirnya menyebabkan masalah lain. WorkManager kini memiliki API baru yang dapat digunakan untuk menentukan proses aplikasi utama yang menggunakan
Configuration#setDefaultProcessName(processName).processNameadalah nama proses yang sepenuhnya memenuhi syarat dengan formatpackageName:processName(misalnyacom.example:remote). - Sekumpulan API baru:
RemoteWorkManagerdanRemoteWorkContinuationuntuk permintaan pekerjaanenqueue,cancel, danquery. API ini tidak menyertakan varianLiveDatauntuk menghindari pertentangan resource SQLite di beberapa proses. Semua panggilan keenqueue,cancel, danqueryditeruskan ke proses aplikasiprimarymenggunakan AIDL dan menampilkanListenableFuturedengan lancar. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- WorkManager biasanya perlu diinisialisasi dalam setiap proses aplikasi. Hal ini tidak bagus karena akan meningkatkan pertentangan resource SQLite yang pada akhirnya menyebabkan masalah lain. WorkManager kini memiliki API baru yang dapat digunakan untuk menentukan proses aplikasi utama yang menggunakan
Perubahan API
- WorkManager sekarang lebih agresif dalam memangkas
WorkRequestyang sudah selesai dan tidak memiliki dependensi yang belum selesai. Durasi buffering berubah dari7hari menjadi1hari. (aosp/1419708)
Perbaikan Bug
- WorkManager kini merekonsiliasi tugas secara proaktif sehingga tugas
WorkRequestdanJobSchedulerdisinkronkan saatWorkManagerdiinisialisasi. (aosp/1412794, b/166292069)
Versi 2.5.0-alpha01
19 Agustus 2020
androidx.work:work-*:2.5.0-alpha01 dirilis. Versi 2.5.0-alpha01 berisi commit ini.
Fitur Baru
- Perubahan pada API internal yang memungkinkan kami menyediakan alat yang lebih baik dengan
WorkManagerke depannya. Nantikan pembaruan tambahan.
Perbaikan Bug
- Menangani
SecurityExceptionsaat melacak status jaringan di beberapa perangkat. (aosp/1396969)
Kontribusi Eksternal
- Memperbaiki dokumentasi untuk
ArrayCreatingInputMergeroleh Zac Sweers (github/43).
Versi 2.4.0
Versi 2.4.0
22 Juli 2020
androidx.work:work-*:2.4.0 dirilis. Versi 2.4.0 berisi commit ini.
Perubahan utama sejak versi 2.3.0
- Penjadwal dalam proses
WorkManagersekarang memiliki kemampuan lebih baik. Sebelumnya,Schedulerdalam proses hanya akan mempertimbangkan untuk menjalankan pekerjaan yang tidak tertunda dan yang batasannya terpenuhi. Sekarang, penjadwal dalam proses melacakWorkRequestyang mungkin dijalankan di masa mendatang, termasuk PeriodicWorkRequests.Schedulerdalam proses juga tidak mengamati batas penjadwalan (tetapi tetap dibatasi untuk ukuranExecutoryang digunakan oleh WorkManager). Ini berarti bahwa aplikasi kini dapat menjalankan lebih banyak WorkRequests saat aplikasi berjalan di latar depan. Untuk mengelola eksekusi pekerjaan yang tertunda di latar depan,WorkManagerjuga memperkenalkanRunnableSchedulerbaru yang dapat dikonfigurasi. (aosp/1185778) - WorkManager kini mendukung RxJava 3. Untuk menggunakan RxJava 3, Anda harus menyertakan dependensi berikut:
implementation "androidx.work:work-rxjava3:2.4.0". (aosp/1277904) - Menambahkan kemampuan untuk mengkueri
WorkInfodengan menggunakanWorkQuery. Ini berguna saat developer ingin mengkueriWorkInfodengan kombinasi beberapa atribut. Untuk mengetahui informasi selengkapnya, lihatWorkQuery.Builder.fromStates(...),WorkQuery.Builder. fromTags(...), atauWorkQuery.Builder.fromUniqueWorkNames(...). (aosp/1253230, b/143847546) Menambahkan kemampuan untuk meminta informasi diagnostik dari
WorkManagermenggunakan:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"Ini memberikan banyak informasi yang berguna, termasuk:
- WorkRequest yang diselesaikan dalam 24 jam terakhir.
- WorkRequests yang sedang BERJALAN.
- WorkRequest Terjadwal. (aosp/1235501)
Menambahkan
ExistingWorkPolicy.APPEND_OR_REPLACEyang mirip denganAPPEND, tetapi menggantikan rantai yang memiliki prasyarat yang dibatalkan atau gagal. (b/134613984, aosp/1199640)Menyediakan kemampuan untuk menambahkan
RunnableSchedulerkustom untuk melacak WorkRequests yang perlu dijalankan di masa mendatang. Ini digunakan oleh Penjadwal dalam proses. (aosp/1203944)Menambahkan dukungan untuk penambahan factory secara dinamis sebagai tujuan pendelegasian, saat menggunakan
DelegatingWorkerFactory. (b/156289105, aosp/1309745)Menyelaraskan pelacakan untuk batasan
BATTERY_NOT_LOWdengan platform. (aosp/1312583)Penjadwal dalam proses kini menggunakan API yang lebih baik untuk menentukan nama proses. Hal ini berguna untuk memperbaiki dukungan terhadap aplikasi yang menggunakan banyak proses. (aosp/1324732)
Aturan Lint baru yang menerapkan:
- Penggunaan
foregroundServiceTypeyang tepat saat menggunakansetForegroundAsync()API. (b/147873061, aosp/1215915) - Menentukan id JobScheduler yang harus digunakan oleh WorkManager saat menggunakan JobService API secara langsung. aosp/1223567
- Menambahkan aturan lint baru yang memastikan bahwa implementasi
ListenableWorkersekarang akan menjadipublicsaat menggunakanWorkerFactorydefault. (aosp/1291262)
- Penggunaan
Panggilan ke
setForegroundAsync()yang tidak selesai sebelum penyelesaianListenableWorkersekarang akan ditandai melaluiIllegalStateExceptionpadaListenableFutureyang ditampilkan. (aosp/1262743)Memperbaiki bug ketika
ForegroundServicetidak dihentikan setelahWorkerlatar depan terhenti. (b/155579898, aosp/1302153)Memperbaiki bug ketika
WorkManagermencoba menjalankan beberapa instanceWorkeryang terikat dengan Layanan Latar Depan (b/156310133, aosp/1309853)
Versi 2.4.0-rc01
24 Juni 2020
androidx.work:work-*:2.4.0-rc01 dirilis. Versi 2.4.0-rc01 berisi commit ini.
Perbaikan Bug
- Penjadwal dalam proses kini menggunakan API yang lebih baik untuk menentukan nama proses. Hal ini berguna untuk memperbaiki dukungan terhadap aplikasi yang menggunakan banyak proses. (aosp/1324732)
Versi 2.4.0-beta01
20 Mei 2020
androidx.work:work-gcm:2.4.0-beta01, androidx.work:work-runtime:2.4.0-beta01, androidx.work:work-runtime-ktx:2.4.0-beta01, androidx.work:work-rxjava2:2.4.0-beta01, dan androidx.work:work-testing:2.4.0-beta01 dirilis. Versi 2.4.0-beta01 berisi commit ini.
Perbaikan Bug
- Memperbaiki bug ketika
ForegroundServicetidak dihentikan setelahWorkerlatar depan terhenti. (b/155579898, aosp/1302153) - Memperbaiki bug ketika
WorkManagermencoba menjalankan beberapa instanceWorkeryang terikat dengan Layanan Latar Depan (b/156310133, aosp/1309853) - Menambahkan dukungan untuk penambahan factory secara dinamis sebagai tujuan pendelegasian, saat menggunakan
DelegatingWorkerFactory. (b/156289105, aosp/1309745) - Menyelaraskan pelacakan untuk batasan
BATTERY_NOT_LOWdengan platform. (aosp/1312583)
Versi 2.4.0-alpha03
29 April 2020
androidx.work:work-*:2.4.0-alpha03 dirilis. Versi 2.4.0-alpha03 berisi commit ini.
Fitur Baru
- WorkManager kini mendukung RxJava 3. Untuk menggunakan RxJava 3, Anda harus menyertakan dependensi berikut:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03". (aosp/1277904) - Menambahkan aturan lint baru yang memastikan bahwa implementasi
ListenableWorkersekarang akan menjadipublicsaat menggunakanWorkerFactorydefault. (aosp/1291262)
Perubahan API
- Memanggil
setProgressAsync()setelahListenableWorkermenyelesaikan eksekusi sekarang akan menandakanExceptionmelaluiListenableFuture. (aosp/1285494) WorkQuery.Buildersekarang ditandaifinal. (aosp/1275037)- Metode factory
WorkQuery.Builder, yaituwithStates,withTags, danwithUniqueWorkNames, telah diganti namanya masing-masing menjadifromStates,fromTags, danfromUniqueWorkNames. (aosp/1280287)
Perbaikan Bug
- Mengabaikan
SecurityExceptionsaat melacak status jaringan perangkat. (b/153246136, aosp/1280813)
Versi 2.4.0-alpha02
1 April 2020
androidx.work:work-*:2.4.0-alpha02 dirilis. Versi 2.4.0-alpha02 berisi commit ini.
Fitur Baru
- Menambahkan aturan Lint baru yang akan memberikan peringatan saat
WorkRequestmemerlukanConstraints.setRequiresCharging(...)danConstraints.setRequiresDeviceIdle(...). Beberapa perangkat tidak pernah mengisi daya dan tidak ada aktivitas secara bersamaan. Jadi, permintaan tersebut akan lebih jarang dijalankan daripada yang diharapkan. (aosp/1253840)
Perubahan API
Menambahkan kemampuan untuk mengkueri
WorkInfodengan menggunakanWorkQuery. Ini berguna saat developer ingin mengkueriWorkInfodengan kombinasi beberapa atribut. Untuk mengetahui informasi selengkapnya, lihatWorkQuery.Builder withStates(...),WorkQuery.Builder withTags(...), atauWorkQuery.Builder withUniqueWorkNames(...). (aosp/1253230, b/143847546)Panggilan ke
setForegroundAsync()yang tidak selesai sebelum penyelesaianListenableWorkersekarang akan ditandai melaluiIllegalStateExceptionpadaListenableFutureyang ditampilkan. (aosp/1262743)
Perbaikan Bug
- Memperbaiki aturan lint yang memeriksa durasi interval yang tidak valid untuk
PeriodicWorkRequest. (aosp/1254846, b/152606442)
Versi 2.4.0-alpha01
4 Maret 2020
androidx.work:work-*:2.4.0-alpha01 dirilis. Versi 2.4.0-alpha01 berisi commit ini.
Fitur Baru
Penjadwal dalam proses
WorkManagersekarang memiliki kemampuan lebih baik. Sebelumnya, Penjadwal dalam proses hanya akan mempertimbangkan untuk menjalankan pekerjaan yang tidak tertunda dan yang batasannya terpenuhi. Sekarang, penjadwal dalam proses melacakWorkRequestyang mungkin dijalankan di masa mendatang, termasukPeriodicWorkRequest. Penjadwal dalam proses juga tidak mengamati batas penjadwalan (tetapi tetap dibatasi untuk ukuranExecutoryang digunakan oleh WorkManager). Artinya, sekarang aplikasi dapat menjalankan lebih banyakWorkRequestsaat aplikasi berjalan di latar depan. (aosp/1185778)Menambahkan kemampuan untuk meminta informasi diagnostik dari WorkManager menggunakan
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>". Ini memberikan banyak informasi yang berguna, termasuk:- WorkRequest yang diselesaikan dalam 24 jam terakhir.
- WorkRequests yang sedang BERJALAN.
- WorkRequest Terjadwal. (aosp/1235501)
Aturan Lint baru yang menerapkan:
- Penggunaan
foregroundServiceTypeyang tepat saat menggunakansetForegroundAsync()API. (b/147873061, aosp/1215915) - Menentukan id
JobScheduleryang harus digunakan olehWorkManagersaat menggunakanJobServiceAPI secara langsung. (aosp/1223567)
- Penggunaan
Perubahan API
Menambahkan
ExistingWorkPolicy.APPEND_OR_REPLACEyang mirip denganAPPEND, tetapi menggantikan rantai yang memiliki prasyarat yang dibatalkan atau gagal. (b/134613984, aosp/1199640)Menyediakan kemampuan untuk menambahkan
RunnableSchedulerkustom untuk melacakWorkRequestyang perlu dijalankan di masa mendatang. Ini digunakan oleh Penjadwal dalam proses. (aosp/1203944)
Perbaikan Bug
- Menghentikan penggunaan
setProgress()diRxWorkerkarena sebelumnya menampilkanSingle<Void>yang merupakan jenis yang mustahil. Menambahkan API barusetCompletableProgress()yang menampilkanCompletable; dan menambahkan aturan Lint baru yang membantu migrasi ke API yang baru. (b/150080946, aosp/1242665)
Versi 2.3.4
Versi 2.3.4
18 Maret 2020
androidx.work:work-*:2.3.4 dirilis. Versi 2.3.4 berisi commit ini.
Perbaikan Bug
- Memperbaiki bug yang akan menyebabkan beberapa instance dari
Workerberdurasi panjang dijalankan, setelah melampaui jendela eksekusi 10 menit. (aosp/1247484, b/150553353) - Perbaikan untuk
IssueRegistrylint WorkManager. Terima kasih @ZacSweers dari Slack, atas kontribusinya. (aosp/1217923)
Versi 2.3.3
Versi 2.3.3
4 Maret 2020
androidx.work:work-*:2.3.3 dirilis. Versi 2.3.3 berisi commit ini.
Perbaikan Bug
- Memperbaiki bug yang jika
Workerterganggu, tidak akan dijadwal ulang dengan benar. (b/150325687, aosp/1246571)
Versi 2.3.2
Versi 2.3.2
19 Februari 2020
androidx.work:work-*:2.3.2 dirilis. Versi 2.3.2 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat WorkManager melampaui batas 100 tugas di JobScheduler dalam kasus tertentu. (aosp/1226859, b/149092520)
- Perbaikan untuk kondisi race di ConstraintControllers. (aosp/1220100)
- Mengoptimalkan pengelolaan siklus proses Layanan latar depan untuk Pekerja berdurasi panjang. (aosp/1226295)
- Meningkatkan pengelolaan pembatalan Notifikasi untuk Pekerja berdurasi panjang atas pembatalan Pekerja. (aosp/1228346)
Versi 2.3.1
Versi 2.3.1
5 Februari 2020
androidx.work:work-*:2.3.1 dirilis. Versi 2.3.1 berisi commit ini.
Perbaikan bug
- Mengelola dengan lebih baik siklus proses
NotificationuntukWorkerberdurasi panjang yang dijalankan saatServicelatar depan aktif. (aosp/1218539, b/147249312) WorkManagersekarang bergantung padaandroidx.sqlite:sqlite-framework:2.1.0stabil. (aosp/1217729)- Aturan lint telah ditambahkan untuk memastikan bahwa
foregroundServiceTypeditetapkan dalamAndroidManifest.xmlsaat menggunakanforegroundServiceTypedalamForegroundInfo. (aosp/1214207, b/147873061)
Versi 2.3.0
Versi 2.3.0
22 Januari 2020
androidx.work:work-*:2.3.0 dirilis tanpa perubahan sejak 2.3.0-rc01. Versi 2.3.0 berisi commit ini.
Perubahan penting sejak versi 2.2.0
- Dukungan untuk pekerjaan penting atau berdurasi panjang melalui
ListenableWorker#setForegroundAsync(). - Dukungan untuk Progres Pekerja melalui
ListenableWorker#setProgressAsync(). - WorkManager kini memaketkan aturan lint tambahan sebagai bagian dari library yang membantu mengidentifikasi bug lebih awal.
Versi 2.3.0-rc01
8 Januari 2020
androidx.work:work-*:2.3.0-rc01 dirilis. Versi 2.3.0-rc01 berisi commit ini.
Rilis ini sama persis dengan 2.3.0-beta02
Perbaikan bug
- Artefak
work-testingsekarang menentukan dependensiapipadawork-runtime-ktx. (aosp/1194410)
Versi 2.3.0-beta02
18 Desember 2019
androidx.work:work-*:2.3.0-beta02 dirilis. Versi 2.3.0-beta02 berisi commit ini.
Fitur baru
- Menambahkan pesan error yang lebih baik untuk pengecualian SQLite yang tidak dapat dipulihkan. (aosp/1185777)
- Menambahkan aturan lint yang memastikan bahwa
androidx.work.impl.WorkManagerInitializerpenyedia konten dihapus dariAndroidManifest.xmlketika menggunakan inisialisasi on demand. (aosp/1167007) - Menambahkan peringatan lint saat
enqueue()digunakan untukPeriodicWorkRequest, bukanenqueueUniquePeriodicWork(). (aosp/1166032)
Perubahan API
ForegroundInfosekarang mengharuskan Anda menentukannotificationIdyang akan digunakan saat menggunakanListenableWorker.setForegroundAsync(). Perubahan ini dapat menyebabkan gangguan. Hal ini memungkinkan Anda menjalankan beberapaWorkerberdurasi panjang secara paralel.WorkManagerjuga mengelola masa pakai secara lebih baik untukNotificationyang disediakan. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
Perbaikan bug
- Memperbaiki bug dalam implementasi AlarmManager yang menyebabkan alarm tidak dibersihkan dengan benar. (aosp/1156444)
- Memperbaiki bug ketika daftar kosong
WorkRequestmenyebabkan pembuatan rangkaianWorkContinuationyang salah. (b/142835274, aosp/1157051)
Perubahan dependensi
- WorkManager kini menggunakan Room 2.2.2.
Versi 2.3.0-beta01
20 November 2019
androidx.work:work-*:2.3.0-beta01 dirilis. Versi 2.3.0-beta01 berisi commit ini.
Fitur baru
- Menambahkan aturan lint baru yang mencegah error developer karena penerapan
androidx.work.Configuration.Provideryang salah saat menggunakan inisialisasi sesuai permintaan. aosp/1164559
Versi 2.3.0-alpha03
23 Oktober 2019
androidx.work:work-*:2.3.0-alpha03 dirilis. Versi 2.3.0-alpha03 berisi commit ini.
Fitur baru
- Menambahkan
WorkManager.createCancelPendingIntent()API yang memudahkan Anda membatalkanWorkRequesttanpa harus mendaftarkan komponen lain dalamAndroidManifest.xml. API ini sangat memudahkan pembatalanWorkRequestdariNotification. Nantinya, API ini akan dipasangkan dengan API latar depan baru dalam versi 2.3.0. - WorkManager kini bergantung pada
androidx.room:*:2.2.0stabil.
Perubahan API
- Mengganti nama
ForegroundInfo.getNotificationType()menjadiForegroundInfo.getForegroundServiceType()agar lebih konsisten dengan API platform yang mendasarinya. (b/142729893, aosp/1143316)
Perbaikan bug
- Memperbaiki bug yang disebabkan oleh panggilan yang tidak perlu ke
setTransactionSuccessful()di luar transaksi. Masalah ini muncul pada situasi migrasi yang jarang terjadi. (b/142580433, aosp/1141737)
Versi 2.3.0-alpha02
9 Oktober 2019
androidx.work:work-*:2.3.0-alpha02 dirilis. Versi 2.3.0-alpha02 berisi commit berikut.
Fitur baru
- WorkManager kini mendukung proses menjalankan pekerjaan berdurasi atau pekerjaan penting yang harus dijaga agar selalu aktif oleh OS. Untuk informasi selengkapnya, lihat
ListenableWorker#setForegroundAsync()(atauCoroutineWorker#setForeground()untuk Kotlin). (aosp/1133636)
Perubahan API
containsKeyAPI dalamDatadiganti namanya menjadihasKeyWithValueOfType. Metode ekstensi yang terkait dalam libraryktxjuga diganti namanya. (b/141916545)
Perbaikan bug
- WorkManager menyeimbangkan pekerjaan ketika jumlah
WorkRequestyang diantrekan mendekati batas penjadwalan. (aosp/1105766) - WorkManager hanya akan memanggil
ListenableWorker#onStopped()jika pekerjaan belum selesai. (b/140055777) - WorkManager kini akan menghapus informasi progres saat pekerja mengalami gangguan atau mencapai status terminalnya. (aosp/1114572)
Datakini memiliki representasitoString()yang jauh lebih berguna. (b/140945323)Datakini memiliki metodeequals()yang lebih baik.deepEqualsuntuk jenisArrayjuga kini didukungnya. (b/140922528)- WorkManager sekarang akan menyimpan file preferensi dan database internalnya dalam direktori tanpa cadangan. (b/114808216)
Versi 2.3.0-alpha01
22 Agustus 2019
androidx.work:work-*:2.3.September 5, 20190-alpha01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
ListenableWorkersekarang dapat menetapkan progres melaluisetProgressAsync()API. Juga menambahkansetProgressAPI terkait yang melakukansuspenddiCoroutineWorkerdansetProgressdiRxWorkeryang menampilkanSingle<Void>. Dengan API baru ini, Worker dapat menyampaikan informasi progres melaluiWorkInfoyang memilikigetProgressAPI yang sesuai. (b/79481554)DatamemilikicontainsKey()API yang dapat digunakan untuk memvalidasi bahwa data input keWorkermemiliki kunci dengan jenis yang diharapkan. (b/117136838)Datasekarang dapat diserialisasi menggunakanData.toByteArray()danData.fromByteArray(). Perlu diketahui bahwa tidak ada jaminan pembuatan versi denganDatasehingga Anda tidak boleh mempertahankannya atau menggunakannya untuk IPC antaraplikasi. Data ini hanya aman digunakan di antara beberapa proses dari aplikasi yang sama.- Menambahkan kemampuan untuk menetapkan
InputMergerFactorymelaluiConfiguration.setInputMergerFactory. (b/133273159)
Perubahan API
- WorkManager akan menampilkan instance
IllegalStateExceptionjikaWorkerFactorymenampilkan instanceListenableWorkeryang sebelumnya telah dipanggil. (b/139554406) - Pembaruan dokumentasi seputar pembatalan
ListenableFuturedan callbackonStopped()diListenableWorker. (b/138413671)
Perbaikan bug
- Penjadwal dalam proses sekarang mengabaikan
WorkRequestdengan batasanidle. Permintaan ini kini hanya diambil olehJobSchedulersaat perangkat benar-benar dalam kondisiidle. (aosp/1089779) TestSchedulerkini dapat dengan benar menggunakanExecutoryang ditetapkan untuk eksekutor tugas internalnya dalam pengujian. (aosp/1090749)
Versi 2.2.0
Versi 2.2.0
15 Agustus 2019
androidx.work:work-*:2.2.0 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Rilis ini sama persis dengan androidx.work:work-*:2.2.0-rc01.
Perubahan Penting dalam versi 2.2.0 dari versi 2.1.0
androidx.work:work-gcm:2.2.0 adalah artefak Maven baru yang mendukung penggunaan GCMNetworkManager sebagai penjadwal saat Layanan Google Play tersedia untuk API level <= 22. Artefak ini merupakan dependensi opsional yang membantu menciptakan proses latar belakang yang lebih andal dan berperforma tinggi pada versi API lama. Jika aplikasi Anda menggunakan Layanan Google Play, tambahkan dependensi ini ke file gradle untuk mendapatkan dukungan GCMNetworkManager secara otomatis. Jika Layanan Play tidak tersedia, WorkManager akan terus melakukan fallback ke AlarmManager pada perangkat yang lebih lama.
Versi 2.2.0-rc01
30 Juli 2019
androidx.work:work-*:2.2.0-rc01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
- Memperbaiki bug dalam penerapan AlarmManager yang menyebabkan Layanan dimatikan sebelum waktunya dan menampilkan
RejectedExecutionExceptiondalam situasi yang jarang terjadi. (aosp/1092374) (b/138238197). - Menambahkan solusi untuk
NullPointerExceptionsaat menggunakanJobSchedulerAPI di beberapa perangkat. (aosp/1091020) (b/138364061), (b/138441699)
Versi 2.2.0-beta02
19 Juli 2019
androidx.work:work-*:2.2.0-beta02 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
- Menghapus dependensi jacoco tidak disengaja yang diperkenalkan dalam
2.2.0-beta01.
Versi 2.2.0-beta01
17 Juli 2019
androidx.work:work-*:2.2.0-beta01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
androidx.work:work-gcm:2.2.0-beta01adalah artefak Maven baru yang mendukung penggunaan GCMNetworkManager sebagai penjadwal saat Layanan Google Play tersedia untuk API level <= 22. Artefak ini merupakan dependensi opsional yang membantu menciptakan proses latar belakang yang lebih andal dan berperforma tinggi pada versi API lama. Jika aplikasi Anda menggunakan Layanan Google Play, tambahkan dependensi ini ke file gradle untuk mendapatkan dukungan GCMNetworkManager secara otomatis. Jika Layanan Play tidak tersedia, WorkManager akan terus melakukan fallback ke AlarmManager pada perangkat yang lebih lama.
Perbaikan bug
- Perbaikan untuk
IllegalArgumentExceptionsaat melacak status jaringan pada tablet Nvidia Shield K1. (aosp/1010188)
Versi 2.1.0
Versi 2.1.0
11 Juli 2019
androidx.work:work-*:2.1.0 dirilis. Rilis ini sama persis dengan androidx.work:work-*:2.1.0-rc01.
Perubahan penting sejak versi 2.0.1
work-runtime-ktxkini memerlukan Java 8. Jika mengalami masalah, Anda dapat menambahkan hal berikut kebuild.gradle:kotlinOptions { jvmTarget = "1.8" }- Menambahkan inisialisasi sesuai permintaan untuk WorkManager, yang hanya akan membuat WorkManager
ketika direferensikan. b/127497100 Untuk menyiapkan project agar menggunakan inisialisasi sesuai permintaan:
- Nonaktifkan penginisialisasi otomatis.
- Implementasikan
Configuration.Providerpada objekApplicationkustom Anda. - Ubah semua referensi
WorkManager.getInstance()menjadiWorkManager.getInstance(Context). Sebagai bagian dari perubahan ini, kami telah menghentikanWorkManager.getInstance(). Memanggil penggantiWorkManager.getInstance(Context)yang baru akan selalu lebih aman, meskipun Anda tidak melakukan inisialisasi sesuai permintaan.
PeriodicWorkRequestkini mendukung penundaan awal. Anda dapat menggunakan metodesetInitialDelaypadaPeriodicWorkRequest.Builderuntuk menetapkan penundaan awal. b/111404867- Menambahkan kemampuan untuk menetapkan delegasi ke satu atau beberapa
WorkerFactoryyang terdaftar menggunakanDelegatingWorkerFactory. b/131435993 - Menambahkan kemampuan untuk menyesuaikan
Executoryang digunakan oleh WorkManager untuk semua pencatatan internalnya melaluiConfiguration.Builder.setTaskExecutor. - Menambahkan kemampuan untuk membuat class
WorkerdanListenableWorkeryang dapat diuji unit menggunakanTestWorkerBuilderdanTestListenableWorkerBuilderdalam artefakwork-testing.- Perlu diperhatikan bahwa
work-testingkini menggunakan Kotlin sebagai dependensi dan menyertakan beberapa ekstensi Kotlin secara default.
- Perlu diperhatikan bahwa
- Menambahkan jumlah percobaan ke
WorkInfo. b/127290461 - Jenis
Datakini dapat menyimpan dan mengambil byte dan array byte. Jenis ini TIDAK mengubah ukuran maksimal objekData. - WorkManager kini menggunakan
Room 2.1.0sebagai dependensi, yang akan memperbaiki beberapa masalah database.
Versi 2.1.0-rc01
27 Juni 2019
androidx.work:work-*:2.1.0-rc01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
- Memperbaiki bug yang menyebabkan aplikasi mengalami error saat menjalankan tugas dengan
JobSchedulerketika pencadangan sedang berlangsung b/135858602.
Versi 2.1.0-beta02
20 Juni 2019
androidx.work:work-*:2.1.0-beta02 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
TestListenableWorkerBuilderkini menggunakanWorkerFactoryyang benar saat membuat instanceListenableWorker. b/135275844- Memperbaiki bug yang menyebabkan drift pada jendela eksekusi untuk
WorkRequestdikarenakan penghentian proses. b/135272196
Versi 2.1.0-beta01
13 Juni 2019
androidx.work:work-*:2.1.0-beta01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
- WorkManager kini menggunakan
Room 2.1.0sebagai dependensi, yang akan memperbaiki beberapa masalah database. - Menghapus beberapa I/O disk startup pada thread utama.
- Memperbaiki potensi deadlock pada pelacakan batasan. b/134361006
- Membatalkan secara preemptif tugas-tugas tidak valid yang terkait dengan WorkManager. b/134058261
- Menambahkan beberapa panggilan defensif ke JobScheduler API untuk perangkat yang menunjukkan gangguan fungsi.
Versi 2.1.0-alpha03
5 Juni 2019
androidx.work:*:2.1.0-alpha03 dirilis.
Perbaikan bug
- Dokumentasi yang lebih baik untuk
PeriodicWorkRequest. WorkManagerTestInitHelperkini menggunakan eksekutor latar belakang yang benar untuk pengujian.- Perbaikan untuk masalah SQLite saat menangani transaksi berukuran besar di perangkat tertentu. (b/130182503)
- Dependensi WorkManager sekarang lebih mendetail. (b/133169148).
- Mengatasi bug khusus OEM dalam penerapan
JobSchedulersaat menjadwalkan tugas menggunakan WorkManager. - Peningkatan pada penjadwal berbasis AlarmManager terkait masa aktif layanan yang sebelumnya menyebabkan error yang jarang terjadi. (b/133313734)
Versi 2.1.0-alpha02
16 Mei 2019
WorkManager 2.1.0-alpha02 dirilis. Versi ini berisi beberapa API baru.
Perubahan API
PeriodicWorkRequestkini mendukung penundaan awal. Anda dapat menggunakan metodesetInitialDelaypadaPeriodicWorkRequest.Builderuntuk menetapkan penundaan awal. b/111404867Menambahkan kemampuan untuk menetapkan delegasi ke satu atau beberapa
WorkerFactoryyang terdaftar menggunakanDelegatingWorkerFactory. b/131435993Menambahkan kemampuan untuk menyesuaikan
Executoryang digunakan oleh WorkManager untuk semua pencatatan internalnya melaluiConfiguration.Builder.setTaskExecutor.Meningkatkan dokumentasi terkait
WorkRequest.keepResultsForAtLeast(b/130638001), inisialisasi sesuai permintaan, danPeriodicWorkRequest.Builder(b/131711394).
Versi 2.1.0-alpha01
24 April 2019
WorkManager 2.1.0-alpha01 dirilis. Versi ini berisi beberapa API baru. Perlu diperhatikan bahwa mulai dari versi ini, akan ada fitur baru yang tidak di-backport ke rilis 1.x. Sebaiknya mulailah beralih ke rilis 2.x.
Perubahan API
- Menambahkan inisialisasi sesuai permintaan untuk WorkManager, yang hanya akan membuat WorkManager
ketika direferensikan. b/127497100 Untuk menyiapkan project agar menggunakan inisialisasi sesuai permintaan:
- Nonaktifkan penginisialisasi otomatis.
- Implementasikan
Configuration.Providerpada objekApplicationkustom Anda. - Ubah semua referensi
WorkManager.getInstance()menjadiWorkManager.getInstance(Context). Sebagai bagian dari perubahan ini, kami telah menghentikanWorkManager.getInstance(). Memanggil penggantiWorkManager.getInstance(Context)yang baru akan selalu lebih aman, meskipun Anda tidak melakukan inisialisasi sesuai permintaan.
- Menambahkan kemampuan untuk membuat class
WorkerdanListenableWorkeryang dapat diuji unit menggunakanTestWorkerBuilderdanTestListenableWorkerBuilderdalam artefakwork-testing.- Perlu diperhatikan bahwa
work-testingkini menggunakan Kotlin sebagai dependensi, tetapi juga menyertakan beberapa ekstensi Kotlin secara default.
- Perlu diperhatikan bahwa
- Menambahkan jumlah percobaan ke
WorkInfo. b/127290461 - Jenis
Datakini dapat menyimpan dan mengambil byte dan array byte. Jenis ini TIDAK mengubah ukuran maksimal objekData. CoroutineWorker.coroutineContextkini tidak digunakan lagi. Kolom ini salah ditulis sebagaiCoroutineDispatcher; Anda tidak lagi memerlukannya karena sekarang Anda dapat mengakses sendiri coroutineContext yang diinginkan dalam isi fungsi yang melakukan penangguhan.RxWorker.createWork()danRxWorker.getBackgroundScheduler()sekarang diberi anotasi dengan jenis nilai@NonNullyang ditampilkan.
Versi 2.0.1
Versi 2.0.1
9 April 2019
WorkManager 2.0.1 dirilis. Rilis ini identik dengan 2.0.1-rc01.
Versi 2.0.1-rc01
3 April 2019
WorkManager 2.0.1-rc01 dirilis. Versi ini berisi beberapa perbaikan bug. Untuk pengguna rilis 1.x lama, sebagian perubahan ini juga muncul pada 1.0.1-rc01.
Perbaikan Bug
- Pengujian robolectric sekarang berjalan dengan baik pada WorkManager. b/122553577
- Memperbaiki error kasus ekstrem dengan pelacakan batasan yang tidak dibersihkan pada pra-JobScheduler API. b/129226383
- Memperbaiki penanganan
StackOverflowErrordengan rantai kerja yang panjang. b/129091233 - Memperbarui dokumentasi
PeriodicWorkRequestuntuk menunjukkan bahwa waktu fleksibel tidak didukung pada API 23. - Memperbaiki beberapa link yang rusak dalam dokumentasi Kotlin.
Versi 2.0.0
Versi 2.0.0
20 Maret 2019
WorkManager 2.0.0 dirilis. Versi ini identik dengan 2.0.0-rc01 dan merupakan versi AndroidX dari versi 1.0.0 stabil dengan dependensi AndroidX. Sebaiknya Anda menargetkan versi ini, bukan versi 1.x lama. Semua pengembangan aktif akan menargetkan 2.x, sedangkan 1.x hanya akan menerima perbaikan bug penting untuk waktu terbatas.
Versi 2.0.0-rc01
7 Maret 2019
WorkManager 2.0.0-rc01 dirilis. Versi ini identik dengan versi 1.0.0 stabil, tetapi memiliki dependensi AndroidX. Setelah WorkManager mencapai versi 2.0.0 stabil, Anda harus menyertakan versi ini, sedangkan versi 1.x lama hanya akan menerima beberapa perbaikan bug penting. Semua pengembangan aktif akan menargetkan 2.x.
Dependensi pra-AndroidX
Dokumen referensi: 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") }
Versi 1.0.1
Versi 1.0.1
9 April 2019
WorkManager 1.0.1 dirilis. Rilis ini identik dengan 1.0.1-rc01.
Perlu diperhatikan bahwa kami sangat menganjurkan pengguna untuk melakukan update ke WorkManager 2.x, karena ke depannya, library 1.x akan menerima sedikit sekali update. API baru juga tidak akan dirilis untuk library 1.x.
Versi 1.0.1-rc01
2 April 2019
WorkManager 1.0.1-rc01 dirilis. Versi ini berisi beberapa perbaikan bug.
Perbaikan Bug
- Pengujian robolectric sekarang berjalan dengan baik pada WorkManager. b/122553577
- Memperbaiki error kasus ekstrem dengan pelacakan batasan yang tidak dibersihkan pada pra-JobScheduler API. b/129226383
- Memperbaiki penanganan
StackOverflowErrordengan rantai kerja yang panjang. b/129091233
Versi 1.0.0
Versi 1.0.0
05 Maret 2019
Ini adalah rilis stabil WorkManager 1.0.0. Versi WorkManager ini identik dengan 1.0.0-rc02.
Versi 1.0.0-rc02
21 Februari 2019
Ini adalah kandidat rilis kedua untuk rilis stabil WorkManager 1.0.0. Rilis ini berisi dua perbaikan bug.
Perbaikan Bug
Workersekarang dijadwalkan dengan benar setelah aplikasi mengalami error. b/124546316Workeryang menampilkanExceptionyang tidak diperiksa sekarang ditandai dengan benar sebagaiFAILEDdan tidak lagi mengakibatkan error pada proses aplikasi.
Versi 1.0.0-rc01
14 Februari 2019
Ini adalah kandidat rilis untuk rilis stabil WorkManager 1.0.0. Rilis ini berisi satu perbaikan bug.
Perbaikan Bug
- Implementasi berbasis AlarmManager sekarang mengikuti jendela
flexdengan benar untuk PeriodicWorkRequests. b/124274584
Versi 1.0.0-beta05
6 Februari 2019
Rilis ini berisi beberapa perbaikan bug.
Perbaikan Bug
- Memperbaiki masalah dengan
JobScheduler.getPendingJob(...)yang digunakan pada API 23. b/123893059 - Memperbaiki
NullPointerExceptiondi perangkat yang menjalankan Android 5.1 (API level 22) atau yang lebih rendah. b/123835104
Versi 1.0.0-beta04
4 Februari 2019
Rilis ini berisi beberapa perbaikan bug.
Perbaikan Bug
- Meningkatkan penjadwalan PeriodicWork untuk implementasi berbasis AlarmManager.
- Memperbaiki masalah yang menyebabkan WorkManager gagal melacak batasan dengan benar saat menggunakan implementasi berbasis AlarmManager. b/123379508
- Memperbaiki masalah yang menyebabkan WorkManager gagal mencoba ulang pekerjaan saat proses dihentikan selagi menggunakan implementasi berbasis AlarmManager. b/123329850
- Memperbaiki masalah yang menyebabkan WorkManager membocorkan Wakelocks saat menggunakan implementasi berbasis AlarmManager.
Versi 1.0.0-beta03
25 Januari 2019
Rilis ini berisi beberapa perbaikan bug.
Perbaikan Bug
- Kami memperkenalkan
1.0.0-beta02regresi yang menyebabkan pekerjaan tidak dijalankan dengan benar pada beberapa situasi. b/123211993 - Memperbaiki masalah yang menyebabkan pekerjaan tidak mengikuti waktu backoff dengan benar. b/122881597
- Memperbaiki
ConcurrentModificationExceptiondi perangkat yang menjalankan Android 5.1 (API level 22) atau yang lebih lama. Perbaikan ini merupakan kelanjutan dari yang dilakukan pada1.0.0-beta02. b/121345393 - Menambahkan
exported=falseuntuk beberapa komponen dalam manifes kami yang tidak memiliki anotasi ini. - Menyertakan informasi tentang cara WorkManager berinteraksi dengan OS dalam dokumentasi tingkat paket.
Versi 1.0.0-beta02
15 Januari 2019
Rilis ini berisi beberapa perbaikan bug.
Perbaikan Bug
- Memperbaiki masalah ekstrem yang menyebabkan pekerjaan berkala dapat berjalan lebih dari satu kali per interval di perangkat yang menjalankan Android 6.0 (API level 23). b/121998363
- Memperbaiki
ConcurrentModificationExceptiondi perangkat yang menjalankan Android 5.1 (API level 22) atau yang lebih lama. b/121345393 - Memperbaiki eksekusi pekerjaan yang salah saat Batasan tidak tercapai di perangkat yang menjalankan Android 5.1 (API level 22) atau yang lebih lama. b/122578012
- Mengoptimalkan penanganan penyelesaian pekerjaan agar menjadi lebih cepat pada beberapa kasus ekstrem. b/122358129
- Menambahkan perubahan untuk mengatasi potensi kondisi race di antara beberapa instance
LiveDatayang digunakan WorkManager. - Beralih untuk menggunakan dependensi
Room1.1.1, bukan1.1.1-rc01; kedua versi ini identik. b/122578011
Versi 1.0.0-beta01
19 Desember 2018
Rilis ini tidak berisi perubahan API; ke depannya, WorkManager diharapkan tetap menjadi API stabil hingga versi berikutnya kecuali jika ada masalah sangat penting. Rilis ini berisi beberapa perbaikan bug.
Perbaikan Bug
- Turunan yang sebelumnya dibatalkan dari pekerjaan induk yang berhasil diselesaikan tidak akan dijalankan lagi. b/120811767
- Menginisialisasi class logging dengan benar (muncul terutama selama pengujian).
Versi 1.0.0-alpha13
12 Desember 2018
Rilis ini berisi perubahan minor pada API yang akan berguna bagi sebagian pengguna Kotlin.
Perubahan API
androidx.work.Resulttelah dipindahkan agar menjadi class dalam diListenableWorker. Hal ini mencegah masalah pemfaktoran ulang dengan class level atas Kotlin,Result. Perubahan API ini dapat menyebabkan gangguan. b/120564418
Perubahan API yang Dapat Menyebabkan Gangguan
androidx.work.Resulttelah dipindahkan agar menjadi class dalam diListenableWorker.
Versi 1.0.0-alpha12
5 Desember 2018
Rilis ini berisi beberapa perubahan API yang dapat menyebabkan gangguan; silakan lihat bagian Perubahan API yang Dapat Menyebabkan Gangguan di bawah. Versi ini kemungkinan akan dirilis sebagai versi beta pertama kami. alpha12 juga berisi pembaruan dokumentasi yang lengkap.
Perubahan API
- Artefak baru,
work-rxjava2, memperkenalkanRxWorker. Ini adalahListenableWorkeryang mengharapkanSingle<Payload>. - Dukungan untuk Firebase JobDispatcher telah dihapus karena tidak akan digunakan lagi dalam waktu dekat. Artinya, artefak
work-firebasetidak akan lagi diupdate selagi kami beralih ke versi beta. Kami akan mempertimbangkan untuk menambahkan suatu alternatif di masa mendatang. - Menggabungkan
Payloadke dalamResult.Resultkini menjadi "class terkunci" dengan tiga penerapan konkret, yang dapat Anda peroleh melaluiResult.success()(atauResult.success(Data)),Result.failure()(atauResult.failure(Data)), danResult.retry().ListenableFuturekini akan menampilkanResult, bukanPayload.Workertidak memiliki metode pengambil dan penyetel untukDataoutput. Perubahan ini dapat menyebabkan gangguan. - Menambahkan
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)danConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)serta varian untuk mendukung URI konten pemicu yang lambat dengan lebih baik. b/119919774 - Menambahkan varian
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration). Metode ini memerlukan API 26. - Menambahkan metode ekstensi Kotlin
Operation.await()danListenableFuture.await(). - Mengganti nama
Operation.getException()menjadiOperation.getThrowable(). Perubahan ini dapat menyebabkan gangguan. - Class
ContentUriTriggersdan metode yang mereferensikannya tidak lagi tersedia untuk penggunaan publik. Perubahan ini dapat menyebabkan gangguan. - Menghapus metode vararg yang tersisa di
WorkManager,WorkContinuation, danOneTimeWorkRequestuntuk menyederhanakan API. Untuk memperbaiki masalah build, Anda dapat menggabungkan vararg yang ada denganArrays.asList(...). Kami masih menyertakan versi argumen tunggal dari masing-masing metode. Perubahan ini dapat menyebabkan gangguan. - Menghapus varian
WorkContinuation.combine(OneTimeWorkRequest, *). Varian tersebut memberikan API yang membingungkan; metodecombineyang ada dapat lebih mudah dipahami. Perubahan ini dapat menyebabkan gangguan.
Perbaikan Bug
- Implementasi pra-Marshmallow sekarang lebih dapat diandalkan dalam pemulihan dari penghentian proses pekerjaan yang sudah dieksekusi.
LiveDatayang diamati melaluiobserveForeverdilacak melalui WorkManager. Perbaikan ini merupakan backport dari perbaikan library Room. b/74477406Data.Builder.build()kini menampilkan pengecualian jika objek yang diserialisasi melebihi ukuran maksimumnya. Sebelumnya, pengecualian hanya terjadi pada thread latar belakang yang tidak dapat Anda tangani dengan baik.- Pekerjaan yang dihentikan vs dibatalkan kini dibedakan dengan lebih baik;
getWorkInfoById()akan menampilkanWorkInfodenganStateCANCELLEDselamaListenableWorker.onStopped(). - Memperlakukan
Resultnullsebagai kegagalan diListenableWorker. b/120362353 - Perbaikan spekulatif untuk Tablet Shield yang menjalankan API 24 yang terkadang menampilkan
IllegalArgumentException. b/119484416
Perubahan API yang Dapat Menyebabkan Gangguan
- Dukungan untuk Firebase JobDispatcher telah dihapus karena tidak akan digunakan lagi dalam waktu dekat. Artinya, artefak
work-firebasetidak akan lagi diupdate selagi kami beralih ke versi beta. Kami akan mempertimbangkan untuk menambahkan suatu alternatif di masa mendatang. - Menggabungkan
Payloadke dalamResult.Resultkini menjadi "class terkunci" dengan tiga penerapan konkret, yang dapat Anda peroleh melaluiResult.success()(atauResult.success(Data)),Result.failure()(atauResult.failure(Data)), danResult.retry().ListenableFuturekini akan menampilkanResult, bukanPayload.Workertidak memiliki metode pengambil dan penyetel untukDataoutput. - Menambahkan metode ekstensi Kotlin
Operation.await()danListenableFuture.await(). - Mengganti nama
Operation.getException()menjadiOperation.getThrowable(). - Class
ContentUriTriggersdan metode yang mereferensikannya tidak lagi tersedia untuk penggunaan publik. - Menghapus metode vararg yang tersisa di
WorkManager,WorkContinuation, danOneTimeWorkRequestuntuk menyederhanakan API. Untuk memperbaiki masalah build, Anda dapat menggabungkan vararg yang ada denganArrays.asList(...). Kami masih menyertakan versi argumen tunggal dari masing-masing metode. - Menghapus varian
WorkContinuation.combine(OneTimeWorkRequest, *). Varian tersebut memberikan API yang membingungkan; metodecombineyang ada dapat lebih mudah dipahami.
Versi 1.0.0-alpha11
8 November 2018
Rilis ini memuat banyak perubahan yang akan menjadi API stabil pada beta.
Ada sejumlah perubahan API yang dapat menyebabkan gangguan pada rilis ini; silakan lihat bagian Perubahan API yang Dapat Menyebabkan Gangguan di bawah.
Perubahan API
work-runtime-ktxmemperkenalkanCoroutineWorkerbaru.WorkStatusdiganti namanya menjadiWorkInfo. Semua varian metodegetStatusyang sesuai telah diganti namanya menjadi variangetWorkInfoyang sesuai. Perubahan ini dapat menyebabkan gangguan.ListenableWorker.onStopped()tidak lagi menerima argumen boolean jikaWorkRequestdibatalkan.WorkManagertidak lagi membuat pembedaan ini. Perubahan ini dapat menyebabkan gangguan.- Paket
androidx.work.testtelah diganti namanya menjadi paketandroidx.work.testing. Perubahan ini dapat menyebabkan gangguan. - Penyetel di
Constraintstidak lagi menjadi bagian dari API publik. Perubahan ini dapat menyebabkan gangguan. WorkerParameters.getTriggeredContentUris()danWorkerParameters.getTriggeredContentAuthorities()sebelumnya menampilkan array. Sekarang, metode ini menampilkan Collections. Perubahan ini dapat menyebabkan gangguan.ListenableWorker.onStartWork()diganti namanya menjadiListenableWorker.startWork(). Perubahan ini dapat menyebabkan gangguan.- Konstruktor untuk
WorkStatustidak lagi menjadi bagian dari API publik. Perubahan ini dapat menyebabkan gangguan. Configuration.getMaxJobSchedulerID()danConfiguration.getMinJobSchedulerID()secara berurutan diganti namanya menjadiConfiguration.getMinJobSchedulerId()danConfiguration.getMaxJobSchedulerId(). Perubahan ini dapat menyebabkan gangguan.- Menambahkan banyak anotasi
@NonNullke API publik untuk meningkatkan ergonomi API. - Menambahkan
WorkManager.enqueueUniqueWork()API untuk mengantrekanOneTimeWorkRequestyang unik tanpa harus membuatWorkContinuation. - Semua varian metode
enqueuedancancelpadaWorkManagerkini menampilkan jenisOperationbaru. Perubahan ini dapat menyebabkan gangguan. - Semua varian
enqueuetidak lagi menerima vararg untukWorkRequest. Perubahan ini dapat menyebabkan gangguan. Sebagai gantinya, gunakan Collections. Anda dapat menggunakanArrays.asList()untuk mengubah kode yang sudah ada. Kami melakukan ini untuk mengurangi antarmuka API dan jumlah metode. - Mencoba untuk melakukan
initializepadaWorkManagerlebih dari sekali per proses kini akan menampilkanIllegalStateException. Perubahan ini dapat menyebabkan gangguan.
Perbaikan Bug
WorkRequest.Builderdalam artefakwork-runtime-ktxkini menggunakanListenableWorker. Perbaikan b/117666259- Pastikan waktu percobaan berikutnya untuk
PeriodicWorkditetapkan ke masa mendatang. Perbaikan b/118204399 - Menghapus disk I/O potensial ketika menggunakan WorkManager saat memulai aplikasi. Perbaikan b/117796731
- Memperbaiki kondisi race di
WorkConstraintsTracker. Memperbaiki android-workmanager/issues/56
Perubahan API yang Dapat Menyebabkan Gangguan
WorkStatusdiganti namanya menjadiWorkInfo. Semua varian metodegetStatusyang sesuai telah diganti namanya menjadi variangetWorkInfoyang sesuai.ListenableWorker.onStopped()tidak lagi menerima argumen boolean jikaWorkRequestdibatalkan.WorkManagertidak lagi membuat pembedaan ini.- Paket
androidx.work.testtelah diganti namanya menjadi paketandroidx.work.testing. - Penyetel di
Constraintstidak lagi menjadi bagian dari API publik. WorkerParameters.getTriggeredContentUris()danWorkerParameters.getTriggeredContentAuthorities()sebelumnya menampilkan array. Sekarang, metode ini menampilkan Collections.ListenableWorker.onStartWork()diganti namanya menjadiListenableWorker.startWork().- Konstruktor untuk
WorkStatustidak lagi menjadi bagian dari API publik. Configuration.getMaxJobSchedulerID()danConfiguration.getMinJobSchedulerID()secara berurutan diganti namanya menjadiConfiguration.getMinJobSchedulerId()danConfiguration.getMaxJobSchedulerId().- Semua varian metode
enqueuedancanceldiWorkManagersekarang menampilkan jenisOperationbaru. - Semua varian
enqueuetidak lagi menerima vararg untukWorkRequest. - Mencoba untuk melakukan
initializepadaWorkManagerlebih dari sekali per proses kini akan menampilkanIllegalStateException.
Versi 1.0.0-alpha10
11 Oktober 2018
Rilis ini mendukung pekerjaan asinkron yang dikendalikan oleh developer. Ada sejumlah perubahan API yang dapat menyebabkan gangguan pada rilis ini; silakan lihat bagian Perubahan API yang Dapat Menyebabkan Gangguan di bawah.
WorkManager sedang memasuki fase akhir periode alfa. Kami berharap WorkManager menjadi API stabil dalam versi beta, jadi harap luangkan waktu untuk mengirimkan masukan Anda pada issue tracker kami.
Perubahan API
- Menghapus semua metode dan class yang sebelumnya
deprecated, terutama konstruktorWorkerdefault. Perubahan API ini dapat menyebabkan gangguan. - Mengganti nama
NonBlockingWorkermenjadiListenableWorker, yang sekarang merupakan class publik yang tidak tersembunyi dan siap digunakan.ListenableWorkermenyediakan akses ke satu metode abstrak,ListenableFuture<Payload> onStartWork(), yang dipanggil pada thread utama. Anda dapat menentukan untuk memulai dan memproses pekerjaan secara asinkron. Setelah selesai, Anda harus mengupdateListenableFuturesesuai hasilnya. Penerapan referensiListenableFuturedisediakan dalam paketFuturesdialpha02(lihat di bawah pada bagianWorkManager).WorkermemperluasListenableWorkerdan masih beroperasi seperti sebelumnya, dengan metodeResult doWork()abstrak.- Mengacak beberapa metode dan anggota dari
WorkerkeListenableWorker. - Kami akan segera menyediakan penerapan referensi untuk
ListenableWorkeryang menggunakan coroutine Kotlin (setelah versi stabil dirilis) dan RxJava2.
- Antarmuka
WorkerFactorydan penerapan konkretDefaultWorkerFactorytelah digabungkan menjadi class abstrak yang disebutWorkerFactory. Penerapan ini memastikan bahwa perilaku berbasis refleksi default dipanggil sebagai upaya terakhir untuk setiap instanceWorkerFactoryyang dibuat pengguna. Perubahan ini dapat menyebabkan gangguan. - Menghapus
WorkManager.synchronous()danWorkContinuation.synchronous()serta semua metode yang terkait. MenambahkanListenableFuture<Void>sebagai jenis nilai yang ditampilkan dari banyak metode dalam API. Perubahan API ini dapat menyebabkan gangguan.- Anda kini dapat melakukan perolehan dan pengamatan secara sinkron menggunakan
ListenableFuture. Misalnya,WorkManager.enqueue()sebelumnya digunakan untuk menampilkanvoid, tetapi sekarang akan menampilkanListenableFuture<Void>. Anda dapat memanggilListenableFuture.addListener(Runnable, Executor)atauListenableFuture.get()untuk menjalankan kode setelah operasi selesai. - Perlu diketahui bahwa
ListenableFutureini tidak memberi tahu Anda apakah operasi berhasil atau gagal; hanya memberi tahu bahwa operasi selesai. Anda masih perlu merangkai metode WorkManager untuk mencari tahu informasi ini. - Kami mengabaikan panggilan
cancel()pada objek ini, karena membingungkan dan sulit untuk dibahas (Anda membatalkan operasi atau pekerjaan yang ditimbulkan?). Hal ini terjadi dalam kontrakFuture. - Untuk mempertahankan kesamaan dengan metode
getStatus*sinkron, kami menyediakan varianListenableFuture, dan mengganti nama saat ini yang menampilkanLiveDataagar secara eksplisit memiliki "LiveData" sebagai bagian dari nama tersebut (misalnya,getStatusesByIdLiveData(UUID)). Perubahan API ini dapat menyebabkan gangguan.
- Anda kini dapat melakukan perolehan dan pengamatan secara sinkron menggunakan
Perbaikan Bug
- Memperbaiki masalah umum dari alpha09 terkait file
androidx-annotations.produplikat. Anda dapat menghilangkan solusi ini dari catatan rilis sebelumnya dengan menghapusexclude 'META-INF/proguard/androidx-annotations.pro'dari file gradle. - Menambahkan konfigurasi proguard untuk mempertahankan konstruktor
Workerbaru. b/116296569 - Memperbaiki potensi
NullPointerExceptiondalam kondisi race saatREPLACEdilakukan pada pekerjaan. b/116253486 dan b/116677275 WorkContinuation.combine()sekarang menerima satuWorkContinuationatau lebih, bukan dua atau lebih. b/117266752
Perubahan API yang Dapat Menyebabkan Gangguan
- Menghapus semua metode dan class yang sebelumnya
deprecated, terutama konstruktorWorkerdefault. - Antarmuka
WorkerFactorydan penerapan konkretDefaultWorkerFactorytelah digabungkan menjadi class abstrak yang disebutWorkerFactory. - Menghapus
WorkManager.synchronous()danWorkContinuation.synchronous(). - Metode
WorkManager.getStatus*()sekarang menampilkanListenableFuture.WorkManager.getStatus*LiveData()menampilkanLiveData.
Versi 1.0.0-alpha09
19 September 2018
Masalah Umum
Jika Anda mengalami masalah berikut: "Lebih dari satu file ditemukan dengan jalur independen OS 'META-INF/proguard/androidx-annotations.pro'", harap cantumkan berikut ini dalam file gradle sebagai solusi sementara selagi kami memperbaiki masalah di alpha10:
Groovy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
Perbaikan Bug
- Menambahkan perbaikan lain yang diperlukan untuk error "100 jobs". b/115560696
- Menambahkan beberapa perbaikan untuk error pembatas kunci asing karena kondisi race. b/114705286
- Mendelegasikan panggilan
ConstraintTrackingWorker.onStopped(boolean)keWorkeryang mendasarinya. b/114125093 - Menerapkan penundaan backoff minimum yang benar untuk Firebase JobDispatcher. b/113304626
- Meningkatkan jaminan threading internal ke library.
- Memperbaiki potensi masalah dengan de-duplikasi
LiveDatasecara internal.
Perubahan API
- Anda kini dapat membuat instance
Workersendiri pada runtime dengan menetapkanWorkerFactorysebagai bagian dariWorkManager.Configuration. Factory untuk fallback adalahDefaultWorkerFactory, yang cocok dengan perilaku WorkManager versi sebelumnya.- Konstruktor default untuk
WorkerdanNonBlockingWorkerkini ditandai sebagai tidak digunakan lagi. Harap gunakan konstruktor baru (Worker(Context, WorkerParameters)) dan panggilsuper(Context, WorkerParameters); versi WorkManager berikutnya akan menghapus konstruktor default tersebut.
- Konstruktor default untuk
- Kami sudah mulai menggunakan artefak
ListenableFutureyang baru secara internal (bebas dari dependensi Guava). Kami akan memperkenalkan ListenableFutures ke API dalam rilis mendatang. Perubahan ini akan mendukung proses diperlihatkannyaNonBlockingWorker. - Menambahkan kemampuan untuk memicu pekerjaan yang dibatasi waktu di
TestDrivermelaluiTestDriver.setInitialDelayMet(UUID)danTestDriver.setPeriodDelayMet(UUID). b/113360060
Perubahan yang Dapat Menyebabkan Gangguan
- Konstruktor default
WorkerdanNonBlockingWorkersudah tidak digunakan lagi. Silakan bermigrasi ke konstruktor baru sesegera mungkin. Versi yang akan datang akan menghapus konstruktor default.
Versi 1.0.0-alpha08
27 Agustus 2018
Perbaikan Bug
- Melabeli dengan jelas komponen WorkManager sebagai tidak berbasis booting langsung, sehingga tidak diaktifkan selama booting langsung. Di masa mendatang, kami akan menyediakan versi WorkManager yang peka terhadap booting langsung. b/112665532
- Memperbaiki masalah saat pekerjaan yang dicoba lagi tidak berjalan. b/112604021
- Memperbaiki pekerjaan berkala yang tidak berjalan secara berulang (terkait dengan masalah di atas). b/112859683
- Mengikuti kebijakan backoff saat proses aplikasi sudah berjalan.
- Mengoreksi pesan pengecualian dalam
Datauntuk menunjukkan batas sebesar 10 KB. - Menurunkan nilai maksimum
Configuration.setMaxSchedulerLimit(int)menjadi 50 untuk memperhitungkan latensi dalam penyelesaian pemrosesanJobScheduler. b/112817355
Versi 1.0.0-alpha07
16 Agustus 2018
Perbaikan Bug
- Memperbaiki potensi kueri SQL dengan batas negatif yang dapat menampilkan jumlah hasil yang tidak terbatas.
- Pekerjaan yang telah menyelesaikan eksekusi kini dapat dengan tepat membatalkan semua salinan tertunda dari pekerjaan tersebut di Penjadwal lainnya. Hal ini menyebabkan batas pekerjaan
JobSchedulerterlampaui. b/111569265 - Memperbaiki
ConcurrentModificationExceptiondalamConstraintTracker. b/112272753 - Mengubah anotasi jenis nilai yang ditampilkan untuk
Data.getBooleanArray(String)danData.getIntArray(String)menjadi@Nullable, bukan@NonNull. b/112275229
Perubahan API
Workersekarang memperluas class baru,NonBlockingWorker. Perubahan ini tidak memengaruhi penggunaan saat ini. Di masa mendatang,NonBlockingWorkerakan menjadi entity yang sepenuhnya didukung untuk solusi threading kustom.- Mengubah anotasi jenis nilai yang ditampilkan untuk
Data.getBooleanArray(String)danData.getIntArray(String)menjadi@Nullable, bukan@NonNull. b/112275229 - Ekstensi Kotlin: menghentikan
Map.toWorkData()dan menambahkanworkDataOf(vararg Pair<String, Any?>)level teratas agar lebih konsisten dengan API yang ada.
Versi 1.0.0-alpha06
1 Agustus 2018
Perbaikan Bug
- Mencegah penguncian database saat menjadwalkan pekerjaan. b/111801342
- Memperbaiki bug yang menyebabkan
PeriodicWorktidak berjalan sesuai jadwal dalam mode Istirahatkan. b/111469837 - Memperbaiki kondisi race saat melacak batasan yang menyebabkan
WorkManagermengalami error. googlecodelabs/android-workmanager/issues/56 - Membuat
WorkRequestyang unik saat menggunakanWorkRequest.Builder#build(). b/111408337 - Mengaktifkan penggunaan
RescheduleReceiverhanya jika adaWorkRequestyang membutuhkannya. b/111765853
Versi 1.0.0-alpha05
24 Juli 2018
Perubahan API
WorkManager.getInstance()sekarang dianotasikan dengan@NonNull, bukan@Nullable. Namun, jika singleton tidak diinisialisasi dengan benar dalam kasus inisialisasi manual, metode ini akan menampilkanIllegalStateException. Ini adalah perubahan API yang dapat menyebabkan gangguan.- Menambahkan API baru,
Configuration.Builder.setMinimumLoggingLevel(int), yang dapat mengontrol panjang WorkManager. Secara default, WorkManager mencatatLog.INFOdan di atasnya. - Mengubah tanda tangan
Data.getString()sehingga tidak lagi menggunakan nilai default (secara implisit adalahnull). Perubahan API ini dapat menyebabkan gangguan. - Menandai beberapa metode yang hanya diperlukan untuk penggunaan internal sebagai
@hide. Proses ini mencakup konstruktorConstraints,Data.toByteArray(), danData.fromByteArray(byte[]). Perubahan API ini dapat menyebabkan gangguan.
Perbaikan Bug
- WorkManager tidak lagi menjalankan pekerjaan selama kasus pencadangan otomatis yang diketahui. Ini dapat mengakibatkan error. b/110564377
- Memperbaiki penjadwalan ganda
PeriodicWorkRequestsaat menggunakanJobScheduler. b/110798652 - Memperbaiki masalah
PeriodicWorkRequestyang tidak dijalankan dengan benar setelah perangkat beralih ke mode Istirahatkan. b/111469837 - Memperbaiki masalah dengan penundaan awal saat menggunakan Firebase JobDispatcher. b/111141023
- Memperbaiki beberapa potensi kondisi race dan masalah pengaturan waktu.
- Membebaskan
BroadcastReceiveryang tidak diperlukan lagi dengan benar. - Mengoptimalkan performa penjadwalan ulang saat aplikasi memulai ulang setelah ditutup paksa.
- Mengizinkan
TestScheduler.setAllConstraintsMet(UUID)untuk dipanggil sebelum atau sesudah mengantrekanWorkRequestyang ditentukan. b/111238024
Perubahan yang Dapat Menyebabkan Gangguan
WorkManager.getInstance()sekarang dianotasikan dengan@NonNull, bukan@Nullable.- Mengubah tanda tangan
Data.getString()sehingga tidak lagi menggunakan nilai default (secara implisit adalahnull). - Menandai beberapa metode yang hanya diperlukan untuk penggunaan internal sebagai
@hide. Proses ini mencakup konstruktorConstraints,Data.toByteArray(), danData.fromByteArray(byte[]).
Versi 1.0.0-alpha04
26 Juni 2018
Perbaikan Bug
PeriodicWorkRequestkini dijadwalkan ulang dengan benar saat menggunakan implementasi berbasisAlarmManager.- Memperbaiki potensi ANR saat menjadwal ulang semua pekerja setelah penghentian paksa atau memulai ulang. b/110507716
- Menambahkan anotasi nullability ke berbagai WorkManager API. b/110344065
- Mencatat pengecualian yang tidak tertangkap yang terjadi selama eksekusi Worker. b/109900862
- Memungkinkan migrasi database destruktif jika Anda memutuskan untuk kembali ke versi WorkManager yang lebih lama. b/74633270
- Memperbaiki error migrasi jika membuat tag implisit duplikat. Ini adalah masalah yang sangat langka yang terjadi hanya jika Anda menggunakan format tag implisit yang sama.
Versi 1.0.0-alpha03
19 Juni 2018
Perbaikan Bug
Memperbaiki kondisi race dalam implementasi berbasis
AlarmManager. b/80346526.Memperbaiki tugas duplikat saat menggunakan
JobSchedulersetelah reboot perangkat.Pekerjaan dengan pemicu URI Konten sekarang bertahan dari reboot. b/80234744
Pembaruan dokumentasi. b/109827628, b/109758949, b/80230748
Memperbaiki error saat mengantrekan ulang
WorkRequest. b/109572353.Memperbaiki peringatan compiler Kotlin saat menggunakan dependensi
work-runtime-ktx.WorkManager kini menggunakan
Roomversi1.1.1-rc1.
Perubahan API
- Menambahkan
getStatusesSync(), versi sinkron dariWorkContinuation.getStatuses(). Workermemiliki kemampuan untuk membedakan pembatalan yang dimulai oleh pengguna dengan penghentian sementara yang diminta oleh sistem operasi.Worker.isStopped()akan menampilkantruejika penghentian jenis apa pun diminta.Worker.isCancelled()akan menampilkantruejika pekerjaan dibatalkan secara eksplisit. b/79632247- Menambahkan dukungan untuk JobParameters#getNetwork() pada API 28. Dukungan ini akan melalui
Worker.getNetwork(). - Menambahkan
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)sehingga Anda dapat memberlakukan jumlah pekerjaan yang dapat dikirim keJobScheduleratauAlarmManager. Dengan demikian,WorkManagertidak akan menggunakan semua slotJobScheduleryang tersedia. - Menambahkan
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)yang membantu menentukan rentang ID pekerjaanJobScheduleryang aman untuk digunakan olehWorkManager. b/79996760 Worker.getRunAttemptCount()menampilkan jumlah percobaan saat ini untukWorkertertentu. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)memungkinkan Anda mengantrekanPeriodicWorkRequestunik. b/79600647WorkManager.cancelAllWork()membatalkan semuaWorker. Library yang bergantung padaWorkManagerdapat menanyakan kapan kali terakhir metode ini dipanggil menggunakanWorkManager.getLastCancelAllTimeMillis()untuk pembersihan tambahan status internal.- Menambahkan
WorkManager.pruneWork()untuk menghapus tugas yang sudah selesai dari database internal. b/79950952, b/109710758
Perubahan Perilaku
- Menambahkan tag implisit untuk semua
WorkRequest, yang merupakan nama class yang sepenuhnya memenuhi syarat untukWorker. Hal ini memungkinkan Anda menghapusWorkRequesttanpatagatau saatidtidak tersedia. b/109572351
Perubahan yang Dapat Menyebabkan Gangguan
- Mengganti nama
Worker.WorkerResultmenjadiWorker.Result. Worker.onStoppedkini memiliki parameterisCancelledtambahan yang ditetapkan ketruesaatWorkerdibatalkan secara eksplisit.
Versi 1.0.0-alpha02
24 Mei 2018
Perbaikan Bug
- Memperbaiki
NullPointerExceptionpadaState.isFinished(). b/79550068 - Memperbaiki masalah yang menyebabkan
Workerdijadwalkan ulang padaApplication.onCreate(). b/79660657 - Memperbaiki masalah ketika Anda dapat menjadwalkan lebih banyak pekerjaan dari yang diizinkan oleh OS. b/79497378
- Mengalihkan pembersihan penguncian layar saat aktif yang terkait dengan
Workerke thread latar belakang. - Implementasi
AlarmManagerkini melakukan pembersihan dengan benar saat semua pekerjaan yang tertunda selesai. - Memperbaiki kueri SQL pembersihan yang memengaruhi lokalitas selain Inggris. b/80065360
- Menambahkan dukungan untuk
floatdiData. b/79443878 Data.Builder.putAll()kini menampilkan instanceBuilder. b/79699162- Lebih banyak javadoc dan perbaikan dalam dokumentasi. b/79691663
Perubahan API
Workerdapat bereaksi saat dihentikan.Worker.isStopped()dapat digunakan untuk memeriksa apakahWorkertelah dihentikan.Worker.onStopped()dapat digunakan untuk melakukan operasi pembersihan ringan.Worker.getTags()API menampilkanSettag yang terkait denganWorker.- Menambahkan overload
javax.time.Durationuntuk API yang menggunakan kombinasi durasi danTimeUnit. Ini dilindungi oleh@RequiresApi(26). - Ekstensi
WorkManagertelah dipindahkan dari paketandroidx.work.ktxke paketandroidx.work. Ekstensi lama tidak lagi digunakan dan akan dihapus dalam versi yang akan datang. Configuration.withExecutor()tidak digunakan lagi. Silakan gunakanConfiguration.setExecutor().
Versi 1.0.0-alpha01
8 Mei 2018
WorkManager menyederhanakan penjadwalan dan eksekusi
pekerjaan latar belakang yang terjamin dan mematuhi batas. Rilis awalnya adalah 1.0.0-alpha01.