WorkManager
Update Terbaru | Rilis Stabil Saat Ini | Kandidat Rilis Berikutnya | Rilis Beta | Rilis Alfa |
---|---|---|---|---|
27 Januari 2021 | 2.5.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:
dependencies { def work_version = "2.5.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 punya masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara pada masalah yang ada dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Versi 2.5.0
Versi 2.5.0
27 Januari 2021
androidx.work:work-*:2.5.0
dirilis. Versi 2.5.0 berisi commit berikut ini.
Perubahan utama sejak versi 2.4.0
- Artefak
:work:work-multiprocess
baru untuk aplikasi yang menggunakan beberapa proses. Ini memperkenalkan peningkatan performa dengan menyatukan penjadwalan permintaan tugas 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,
ActivityManager
tidak dapat membuat instanceJobService
untuk memulai tugas. Hal ini menyebabkan tugas dasar dihentikan secara diam-diam karena bug platform.WorkManager
kini memastikan adanya tugas cadangan untuk setiapWorkRequest
ketikaApplication
sedang diinisialisasi oleh tugas yang direkonsiliasi. Ini sangat meningkatkan keandalan eksekusi tugas. (b/172475041, aosp/1489577) WorkManager
membatasi pertumbuhan database dengan mengurangi durasi buffering yang dilacakWorkRequest
setelahWorkRequest
selesai. Durasinya adalah7
hari sebelumnya. Ini telah dikurangi menjadi1
hari + durasi keepResultsForAtLeast. (aosp/1419708)TestListenableWorkerBuilder
kini mendukung class nyata yang mencakupListenableWorker
untuk 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 berikut.
Perbaikan Bug
- Memperbaiki bug ketika
getWorkInfosLiveData
tidak tervalidasi dengan benar setelah entitas diupdate 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
NoSuchElementException
saat mencoba terlepas dari proses yang mati. (aosp/1530589) - Meningkatkan
ConstraintTrackingWorker
untuk hanya menghentikanListenableWorker
jika 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 berikut ini.
Perbaikan Bug
- Memperbaiki bug di
androidx.work:work-multiprocess
saat WorkManager tidak sengaja memblokir thread panggilan ketika mencoba mengikat ke proses yang ditentukan. (aosp/1475538) - Memperbaiki bug saat
PeriodicWorkRequest
tidak 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 berikut.
Fitur Baru
WorkManager
secara otomatis men-throttle jumlahWorkRequest
yang dapat diambil oleh penjadwal dalam proses. Permintaan tersebut masih dieksekusi dalam urutan FIFO. (aosp/1455228)WorkManager
mencoba memulihkan saat datastore aplikasi dalam keadaan buruk. (aosp/1463103)
Perbaikan Bug
- Jika
ListenableWorker
terganggu, segera tandai denganENQUEUED
agar 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 berikut.
Perubahan API
TestListenableWorkerBuilder
danTestWorkerBuilder
tidak menggunakan jenis raw. (I883ad, b/169787349)
Perbaikan Bug
- Menggunakan
ApplicationInfo
untuk menentukan nama proses aplikasi default. (b/168716641, aosp/1429950) - Memperbaiki aturan visibilitas untuk
RemoteWorkManager
danRemoteWorkContinuation
. API ini tidak lagi ditandai sebagai@Restricted
. (aosp/1432091) - Memperbaiki aturan proguard untuk
:work:work-multiprocess
. (aosp/1432091) - Memperbaiki siklus proses notifikasi untuk pekerjaan yang berjalan lama 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
id
untuk 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 perebutan resource SQLite yang pada akhirnya menyebabkan masalah lain. WorkManager kini memiliki API baru yang dapat digunakan untuk menentukan proses aplikasi utama menggunakan
Configuration#setDefaultProcessName(processName)
.processName
adalah nama proses yang sepenuhnya memenuhi syarat dengan formatpackageName:processName
(misalnyacom.example:remote
). - Sekumpulan API baru:
RemoteWorkManager
danRemoteWorkContinuation
untuk permintaan tugasenqueue
,cancel
, danquery
. API ini tidak menyertakan varianLiveData
untuk menghindari perebutan resource SQLite di beberapa proses. Semua panggilan keenqueue
,cancel
, danquery
diteruskan ke proses aplikasiprimary
menggunakan AIDL dan menampilkanListenableFuture
dengan lancar. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- WorkManager biasanya perlu diinisialisasi dalam setiap proses aplikasi. Hal ini tidak bagus karena akan meningkatkan perebutan resource SQLite yang pada akhirnya menyebabkan masalah lain. WorkManager kini memiliki API baru yang dapat digunakan untuk menentukan proses aplikasi utama menggunakan
Perubahan API
- WorkManager sekarang lebih agresif dalam memangkas
WorkRequest
yang sudah selesai dan tidak memiliki dependensi yang belum selesai. Durasi buffering berubah dari7
hari menjadi1
hari. (aosp/1419708)
Perbaikan Bug
- WorkManager kini merekonsiliasi tugas secara proaktif sehingga tugas
WorkRequest
danJobScheduler
disinkronkan saatWorkManager
diinisialisasi. (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 berikut ini.
Fitur Baru
- Perubahan pada API internal yang memungkinkan kami menyediakan alat yang lebih baik dengan
WorkManager
ke depannya. Nantikan pembaruan tambahan.
Perbaikan Bug
- Menangani
SecurityException
saat melacak status jaringan di beberapa perangkat. (aosp/1396969)
Kontribusi Eksternal
- Memperbaiki dokumentasi untuk
ArrayCreatingInputMerger
oleh 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 berikut.
Perubahan utama sejak versi 2.3.0
- Penjadwal dalam proses
WorkManager
sekarang memiliki kemampuan lebih baik. Sebelumnya,Scheduler
dalam proses hanya akan mempertimbangkan untuk menjalankan pekerjaan yang tidak tertunda dan yang batasannya terpenuhi. Sekarang, penjadwal dalam proses melacakWorkRequest
yang mungkin dijalankan di masa mendatang, termasuk PeriodicWorkRequests.Scheduler
dalam proses juga tidak tunduk pada batas penjadwalan (tetapi tetap dibatasi sesuai dengan ukuranExecutor
yang digunakan oleh WorkManager). Ini berarti bahwa aplikasi kini dapat menjalankan lebih banyak WorkRequests saat aplikasi berjalan di latar depan. Untuk mengelola eksekusi tugas yang tertunda di latar depan,WorkManager
juga memperkenalkanRunnableScheduler
baru 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
WorkInfo
dengan menggunakanWorkQuery
. Ini berguna saat developer ingin meng-kueriWorkInfo
dengan 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
WorkManager
menggunakan:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
Ini memberikan banyak informasi yang berguna, termasuk:
- WorkRequests yang diselesaikan dalam 24 jam terakhir.
- WorkRequests yang sedang BERJALAN.
- WorkRequests Terjadwal. (aosp/1235501)
Menambahkan
ExistingWorkPolicy.APPEND_OR_REPLACE
yang mirip denganAPPEND
, tetapi menggantikan rantai yang memiliki prasyarat yang dibatalkan atau gagal. (b/134613984, aosp/1199640)Menyediakan kemampuan untuk menambahkan
RunnableScheduler
kustom 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_LOW
dengan 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
foregroundServiceType
yang 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
ListenableWorker
sekarang akan menjadipublic
saat menggunakanWorkerFactory
default. (aosp/1291262)
- Penggunaan
Panggilan ke
setForegroundAsync()
yang tidak selesai sebelum penyelesaianListenableWorker
sekarang akan ditandai melaluiIllegalStateException
padaListenableFuture
yang dikembalikan. (aosp/1262743)Memperbaiki bug ketika
ForegroundService
tidak dihentikan setelahWorker
latar depan terhenti. (b/155579898, aosp/1302153)Memperbaiki bug ketika
WorkManager
mencoba menjalankan beberapa instanceWorker
yang 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 berikut 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 berikut.
Perbaikan Bug
- Memperbaiki bug ketika
ForegroundService
tidak dihentikan setelahWorker
latar depan terhenti. (b/155579898, aosp/1302153) - Memperbaiki bug ketika
WorkManager
mencoba menjalankan beberapa instanceWorker
yang 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_LOW
dengan 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 berikut 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
ListenableWorker
sekarang akan menjadipublic
saat menggunakanWorkerFactory
default. (aosp/1291262)
Perubahan API
- Memanggil
setProgressAsync()
setelahListenableWorker
menyelesaikan eksekusi sekarang akan menandakanException
melaluiListenableFuture
. (aosp/1285494) WorkQuery.Builder
sekarang ditandaifinal
. (aosp/1275037)- Metode factory
WorkQuery.Builder
, yaituwithStates
,withTags
, danwithUniqueWorkNames
, telah diganti namanya masing-masing menjadifromStates
,fromTags
, danfromUniqueWorkNames
. (aosp/1280287)
Perbaikan Bug
- Mengabaikan
SecurityException
saat 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 berikut.
Fitur Baru
- Menambahkan aturan Lint baru yang akan memberikan peringatan saat
WorkRequest
memerlukanConstraints.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
WorkInfo
dengan menggunakanWorkQuery
. Ini berguna saat developer ingin meng-kueriWorkInfo
dengan 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 penyelesaianListenableWorker
sekarang akan ditandai melaluiIllegalStateException
padaListenableFuture
yang dikembalikan. (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 berikut.
Fitur Baru
Penjadwal dalam proses
WorkManager
sekarang 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 melacakWorkRequest
yang mungkin dijalankan di masa mendatang, termasukPeriodicWorkRequest
. Penjadwal dalam proses juga tidak mengamati batas penjadwalan (tetapi tetap dibatasi untuk ukuranExecutor
yang digunakan oleh WorkManager). Artinya, sekarang aplikasi dapat menjalankan lebih banyakWorkRequest
saat 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:- WorkRequests yang diselesaikan dalam 24 jam terakhir.
- WorkRequests yang sedang BERJALAN.
- WorkRequests Terjadwal. (aosp/1235501)
Aturan Lint baru yang menerapkan:
- Penggunaan
foregroundServiceType
yang tepat saat menggunakansetForegroundAsync()
API. (b/147873061, aosp/1215915) - Menentukan id
JobScheduler
yang harus digunakan olehWorkManager
saat menggunakanJobService
API secara langsung. (aosp/1223567)
- Penggunaan
Perubahan API
Menambahkan
ExistingWorkPolicy.APPEND_OR_REPLACE
yang mirip denganAPPEND
, tetapi menggantikan rantai yang memiliki prasyarat yang dibatalkan atau gagal. (b/134613984, aosp/1199640)Menyediakan kemampuan untuk menambahkan
RunnableScheduler
kustom untuk melacakWorkRequest
yang perlu dijalankan di masa mendatang. Ini digunakan oleh Penjadwal dalam proses. (aosp/1203944)
Perbaikan Bug
- Tidak berlaku lagi
setProgress()
diRxWorker
karena sebelumnya mengembalikanSingle<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 berikut.
Perbaikan Bug
- Memperbaiki bug yang akan menyebabkan beberapa instance dari
Worker
yang berjalan lama dijalankan, setelah melampaui jendela eksekusi 10 menit. (aosp/1247484, b/150553353) - Perbaikan untuk
IssueRegistry
lint 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 berikut.
Perbaikan Bug
- Memperbaiki bug yang jika
Worker
terganggu, 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 berikut.
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)
- Menyempurnakan pengelolaan siklus proses Layanan latar depan untuk Pekerja yang berjalan lama. (aosp/1226295)
- Menyempurnakan pengelolaan pembatalan Notifikasi untuk Pekerja yang berjalan lama 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 berikut.
Perbaikan bug
- Mengelola dengan lebih baik siklus proses
Notification
untukWorker
yang berjalan lama yang dijalankan saatService
latar depan aktif. (aosp/1218539, b/147249312) WorkManager
sekarang bergantung padaandroidx.sqlite:sqlite-framework:2.1.0
stabil. (aosp/1217729)- Aturan lint telah ditambahkan untuk memastikan bahwa
foregroundServiceType
ditetapkan dalamAndroidManifest.xml
saat menggunakanforegroundServiceType
dalamForegroundInfo
. (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 berikut.
Perubahan penting sejak versi 2.2.0
- Dukungan untuk pekerjaan penting atau jangka 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 berikut.
Rilis ini sama persis dengan 2.3.0-beta02
Perbaikan bug
- Artefak
work-testing
sekarang menentukan dependensiapi
padawork-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 berikut.
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.WorkManagerInitializer
penyedia konten dihapus dariAndroidManifest.xml
ketika menggunakan inisialisasi on demand. (aosp/1167007) - Menambahkan peringatan lint saat
enqueue()
digunakan untukPeriodicWorkRequest
, bukanenqueueUniquePeriodicWork()
. (aosp/1166032)
Perubahan API
ForegroundInfo
sekarang mengharuskan Anda menentukannotificationId
yang akan digunakan saat menggunakanListenableWorker.setForegroundAsync()
. Perubahan ini dapat menyebabkan gangguan. Hal ini memungkinkan Anda menjalankan beberapaWorker
jangka panjang secara paralel.WorkManager
juga mengelola masa pakai secara lebih baik untukNotification
yang 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
WorkRequest
menyebabkan pembuatan rangkaianWorkContinuation
yang 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 berikut.
Fitur baru
- Menambahkan aturan lint baru yang mencegah error developer karena penerapan yang salah atas
androidx.work.Configuration.Provider
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 berikut.
Fitur baru
- Menambahkan API
WorkManager.createCancelPendingIntent()
yang memudahkan Anda membatalkanWorkRequest
tanpa harus mendaftarkan komponen lain dalamAndroidManifest.xml
. API ini sangat memudahkan pembatalanWorkRequest
dariNotification
. Nantinya, API ini akan dipasangkan dengan API latar depan baru dalam versi 2.3.0. - WorkManager kini bergantung pada
androidx.room:*:2.2.0
stabil.
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 yang berlangsung lama 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
containsKey
API dalamData
diganti namanya menjadihasKeyWithValueOfType
. Metode ekstensi yang terkait dalam libraryktx
juga diganti namanya. (b/141916545)
Perbaikan bug
- WorkManager menyeimbangkan pekerjaan ketika jumlah
WorkRequest
yang 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)
Data
kini memiliki representasitoString()
yang jauh lebih berguna. (b/140945323)Data
kini memiliki metodeequals()
yang lebih baik.deepEquals
untuk jenisArray
juga 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
ListenableWorker
sekarang dapat menetapkan progres melaluisetProgressAsync()
API. Juga menambahkansetProgress
API terkait yang melakukansuspend
diCoroutineWorker
dansetProgress
diRxWorker
yang menampilkanSingle<Void>
. Dengan API baru ini, Pekerja dapat menyampaikan informasi progres melaluiWorkInfo
yang memilikigetProgress
API yang sesuai. (b/79481554)Data
memilikicontainsKey()
API yang dapat digunakan untuk memvalidasi bahwa data input keWorker
memiliki kunci dengan jenis yang diharapkan. (b/117136838)Data
sekarang dapat diserialisasi menggunakanData.toByteArray()
danData.fromByteArray()
. Perlu diketahui bahwa tidak ada jaminan pemberian versi denganData
sehingga 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
InputMergerFactory
melaluiConfiguration.setInputMergerFactory
. (b/133273159)
Perubahan API
- WorkManager akan menampilkan instance
IllegalStateException
jikaWorkerFactory
menampilkan instanceListenableWorker
yang sebelumnya telah dipanggil. (b/139554406) - Pembaruan dokumentasi seputar pembatalan
ListenableFuture
dan callbackonStopped()
diListenableWorker
. (b/138413671)
Perbaikan bug
- Penjadwal dalam proses sekarang mengabaikan
WorkRequest
dengan batasanidle
. Permintaan ini kini hanya diambil olehJobScheduler
saat perangkat benar-benar dalam kondisiidle
. (aosp/1089779) TestScheduler
kini dapat dengan benar menggunakanExecutor
yang 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
RejectedExecutionException
dalam situasi yang jarang terjadi. (aosp/1092374) (b/138238197). - Menambahkan solusi untuk
NullPointerException
saat menggunakanJobScheduler
API 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-beta01
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.
Perbaikan bug
- Perbaikan untuk
IllegalArgumentException
saat 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-ktx
kini 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.Provider
pada objekApplication
kustom 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.
PeriodicWorkRequest
kini mendukung penundaan awal. Anda dapat menggunakan metodesetInitialDelay
padaPeriodicWorkRequest.Builder
untuk menetapkan penundaan awal. b/111404867- Menambahkan kemampuan untuk menetapkan delegasi ke satu atau beberapa
WorkerFactory
yang terdaftar menggunakanDelegatingWorkerFactory
. b/131435993 - Menambahkan kemampuan untuk menyesuaikan
Executor
yang digunakan oleh WorkManager untuk semua pencatatan internalnya melaluiConfiguration.Builder.setTaskExecutor
. - Menambahkan kemampuan untuk membuat class
Worker
danListenableWorker
yang dapat diuji unit menggunakanTestWorkerBuilder
danTestListenableWorkerBuilder
dalam artefakwork-testing
.- Perlu diperhatikan bahwa
work-testing
kini menggunakan Kotlin sebagai dependensi dan menyertakan beberapa ekstensi Kotlin secara default.
- Perlu diperhatikan bahwa
- Menambahkan jumlah percobaan ke
WorkInfo
. b/127290461 - Jenis
Data
kini dapat menyimpan dan mengambil byte dan array byte. Jenis ini TIDAK mengubah ukuran maksimal objekData
. - WorkManager kini menggunakan
Room 2.1.0
sebagai 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
JobScheduler
ketika 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
TestListenableWorkerBuilder
kini menggunakanWorkerFactory
yang benar saat membuat instanceListenableWorker
. b/135275844- Memperbaiki bug yang menyebabkan drift pada jendela eksekusi untuk
WorkRequest
dikarenakan 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.0
sebagai dependensi, yang akan memperbaiki beberapa masalah database. - Menghapus beberapa I/O disk startup pada thread utama.
- Memperbaiki potensi kebuntuan 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 disempurnakan untuk
PeriodicWorkRequest
. WorkManagerTestInitHelper
kini 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
JobScheduler
saat menjadwalkan tugas menggunakan WorkManager. - Penyempurnaan pada penjadwal berbasis AlarmManager terkait masa aktif layanan yang sebelumnya menyebabkan error langka. (b/133313734)
Versi 2.1.0-alpha02
16 Mei 2019
WorkManager 2.1.0-alpha02 dirilis. Versi ini berisi beberapa API baru.
Perubahan API
PeriodicWorkRequest
kini mendukung penundaan awal. Anda dapat menggunakan metodesetInitialDelay
padaPeriodicWorkRequest.Builder
untuk menetapkan penundaan awal. b/111404867Menambahkan kemampuan untuk menetapkan delegasi ke satu atau beberapa
WorkerFactory
yang terdaftar menggunakanDelegatingWorkerFactory
. b/131435993Menambahkan kemampuan untuk menyesuaikan
Executor
yang digunakan oleh WorkManager untuk semua pencatatan internalnya melaluiConfiguration.Builder.setTaskExecutor
.Penyempurnaan 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.Provider
pada objekApplication
kustom 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
Worker
danListenableWorker
yang dapat diuji unit menggunakanTestWorkerBuilder
danTestListenableWorkerBuilder
dalam artefakwork-testing
.- Perlu diperhatikan bahwa
work-testing
kini menggunakan Kotlin sebagai dependensi, tetapi juga menyertakan beberapa ekstensi Kotlin secara default.
- Perlu diperhatikan bahwa
- Menambahkan jumlah percobaan ke
WorkInfo
. b/127290461 - Jenis
Data
kini dapat menyimpan dan mengambil byte dan array byte. Jenis ini TIDAK mengubah ukuran maksimal objekData
. CoroutineWorker.coroutineContext
kini 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@NonNull
yang 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
StackOverflowError
dengan rantai kerja yang panjang. b/129091233 - Memperbarui dokumentasi
PeriodicWorkRequest
untuk 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
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" }
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
StackOverflowError
dengan 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
Worker
sekarang dijadwalkan dengan benar setelah aplikasi mengalami error. b/124546316Worker
yang menampilkanException
yang tidak diperiksa sekarang ditandai dengan benar sebagaiFAILED
dan 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
flex
dengan 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
NullPointerException
di perangkat yang menjalankan Android 5.1 (API level 22) atau yang lebih lama. b/123835104
Versi 1.0.0-beta04
4 Februari 2019
Rilis ini berisi beberapa perbaikan bug.
Perbaikan Bug
- Menyempurnakan 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-beta02
regresi 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
ConcurrentModificationException
di perangkat yang menjalankan Android 5.1 (API atau) atau yang lebih lama. Perbaikan ini merupakan kelanjutan dari yang dilakukan pada1.0.0-beta02
. b/121345393 - Menambahkan
exported=false
untuk 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
ConcurrentModificationException
di 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
- Penanganan penyelesaian pekerjaan yang dioptimalkan menjadi lebih cepat pada beberapa kasus ekstrem. b/122358129
- Menambahkan perubahan untuk mengatasi potensi kondisi race di antara beberapa instance
LiveData
yang digunakan WorkManager. - Beralih untuk menggunakan dependensi
Room
1.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.Result
telah 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.Result
telah 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 adalahListenableWorker
yang mengharapkanSingle<Payload>
. - Dukungan untuk Firebase JobDispatcher telah dihapus karena tidak akan digunakan lagi dalam waktu dekat. Artinya, artefak
work-firebase
tidak akan lagi diupdate selagi kami beralih ke versi beta. Kami akan mencari cara untuk menambahkan alternatif di masa mendatang. - Menggabungkan
Payload
ke dalamResult
.Result
kini menjadi "class terkunci" dengan tiga penerapan konkret, yang dapat Anda peroleh melaluiResult.success()
(atauResult.success(Data)
),Result.failure()
(atauResult.failure(Data)
), danResult.retry()
.ListenableFuture
kini akan menampilkanResult
, bukanPayload
.Worker
tidak memiliki metode getter and setter untukData
output. 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
ContentUriTriggers
dan metode yang mereferensikannya tidak lagi tersedia untuk penggunaan publik. Perubahan ini dapat menyebabkan gangguan. - Menghapus metode vararg yang tersisa di
WorkManager
,WorkContinuation
, danOneTimeWorkRequest
untuk 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; metodecombine
yang ada dapat lebih mudah dipahami. Perubahan ini dapat menyebabkan gangguan.
Perbaikan Bug
- Implementasi pra-Marshmallow sekarang lebih dapat diandalkan dalam memulihkan dari kerusakan proses pekerjaan yang sudah dieksekusi.
LiveData
yang diamati melaluiobserveForever
dilacak 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 menampilkanWorkInfo
denganState
CANCELLED
selamaListenableWorker.onStopped()
. - Memperlakukan
null
Result
sebagai 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-firebase
tidak akan lagi diupdate selagi kami beralih ke versi beta. Kami akan mencari cara untuk menambahkan alternatif di masa mendatang. - Menggabungkan
Payload
ke dalamResult
.Result
kini menjadi "class terkunci" dengan tiga penerapan konkret, yang dapat Anda peroleh melaluiResult.success()
(atauResult.success(Data)
),Result.failure()
(atauResult.failure(Data)
), danResult.retry()
.ListenableFuture
kini akan menampilkanResult
, bukanPayload
.Worker
tidak memiliki metode getter and setter untukData
output. - Menambahkan metode ekstensi Kotlin
Operation.await()
danListenableFuture.await()
. - Mengganti nama
Operation.getException()
menjadiOperation.getThrowable()
. - Class
ContentUriTriggers
dan metode yang mereferensikannya tidak lagi tersedia untuk penggunaan publik. - Menghapus metode vararg yang tersisa di
WorkManager
,WorkContinuation
, danOneTimeWorkRequest
untuk 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; metodecombine
yang 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-ktx
memperkenalkanCoroutineWorker
baru.WorkStatus
diganti namanya menjadiWorkInfo
. Semua varian metodegetStatus
yang sesuai telah diganti namanya menjadi variangetWorkInfo
yang sesuai. Perubahan ini dapat menyebabkan gangguan.ListenableWorker.onStopped()
tidak lagi menerima argumen boolean jikaWorkRequest
dibatalkan.WorkManager
tidak lagi membuat pembedaan ini. Perubahan ini dapat menyebabkan gangguan.- Paket
androidx.work.test
telah diganti namanya menjadi paketandroidx.work.testing
. Perubahan ini dapat menyebabkan gangguan. - Setter di
Constraints
tidak 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
WorkStatus
tidak 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
@NonNull
ke API publik untuk meningkatkan ergonomi API. - Menambahkan
WorkManager.enqueueUniqueWork()
API untuk mengantrekanOneTimeWorkRequest
yang unik tanpa harus membuatWorkContinuation
. - Semua varian metode
enqueue
dancancel
padaWorkManager
kini menampilkan jenisOperation
baru. Perubahan ini dapat menyebabkan gangguan. - Semua varian
enqueue
tidak 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
initialize
WorkManager
lebih dari sekali per proses kini akan menampilkanIllegalStateException
. Perubahan ini dapat menyebabkan gangguan.
Perbaikan Bug
WorkRequest.Builder
dalam artefakwork-runtime-ktx
kini menggunakanListenableWorker
. Memperbaiki b/117666259- Pastikan waktu percobaan berikutnya untuk
PeriodicWork
ditetapkan ke masa mendatang. Memperbaiki 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
WorkStatus
diganti namanya menjadiWorkInfo
. Semua varian metodegetStatus
yang sesuai telah diganti namanya menjadi variangetWorkInfo
yang sesuai.ListenableWorker.onStopped()
tidak lagi menerima argumen boolean jikaWorkRequest
dibatalkan.WorkManager
tidak lagi membuat pembedaan ini.- Paket
androidx.work.test
telah diganti namanya menjadi paketandroidx.work.testing
. - Setter di
Constraints
tidak 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
WorkStatus
tidak lagi menjadi bagian dari API publik. Configuration.getMaxJobSchedulerID()
danConfiguration.getMinJobSchedulerID()
secara berurutan diganti namanya menjadiConfiguration.getMinJobSchedulerId()
danConfiguration.getMaxJobSchedulerId()
.- Semua varian metode
enqueue
dancancel
diWorkManager
sekarang menampilkan jenisOperation
baru. - Semua varian
enqueue
tidak lagi menerima vararg untukWorkRequest
. - Mencoba untuk melakukan
initialize
WorkManager
lebih 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 fitur pelacak masalah kami.
Perubahan API
- Menghapus semua metode dan class yang sebelumnya
deprecated
, terutama konstruktorWorker
default. Perubahan API ini dapat menyebabkan gangguan. - Mengganti nama
NonBlockingWorker
menjadiListenableWorker
, yang sekarang merupakan class publik yang tidak tersembunyi dan siap digunakan.ListenableWorker
menyediakan 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 mengupdateListenableFuture
sesuai hasilnya. Penerapan referensiListenableFuture
disediakan dalam paketFutures
dialpha02
(lihat di bawah pada bagianWorkManager
).Worker
memperluasListenableWorker
dan masih beroperasi seperti sebelumnya, dengan metodeResult doWork()
abstrak.- Mengacak beberapa metode dan anggota dari
Worker
keListenableWorker
. - Kami akan segera menyediakan penerapan referensi untuk
ListenableWorker
yang menggunakan coroutine Kotlin (setelah versi stabil dirilis) dan RxJava2.
- Antarmuka
WorkerFactory
dan penerapan konkretDefaultWorkerFactory
telah digabungkan menjadi class abstrak yang disebutWorkerFactory
. Penerapan ini memastikan bahwa perilaku berbasis refleksi default dipanggil sebagai upaya terakhir untuk setiap instanceWorkerFactory
yang 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
ListenableFuture
ini 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*
yang tersinkron, kami menyediakan varianListenableFuture
, dan mengganti nama saat ini yang menampilkanLiveData
agar 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.pro
duplikat. 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
Worker
baru. b/116296569 - Memperbaiki potensi
NullPointerException
dalam kondisi race saatREPLACE
dilakukan pada pekerjaan. b/116253486 dan b/116677275 WorkContinuation.combine()
sekarang menerima satu atau lebihWorkContinuation
, bukan dua atau lebih. b/117266752
Perubahan API yang Dapat Menyebabkan Gangguan
- Menghapus semua metode dan class yang sebelumnya
deprecated
, terutama konstruktorWorker
default. - Antarmuka
WorkerFactory
dan penerapan konkretDefaultWorkerFactory
telah 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 lokasi independen OS 'META-INF/proguard/androidx-annotations.pro'", harap cantumkan berikut ini dalam file gradle sebagai solusi sementara selagi kami memperbaiki masalah di alpha10:
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)
keWorker
yang mendasarinya. b/114125093 - Menerapkan penundaan backoff minimum yang benar untuk Firebase JobDispatcher. b/113304626
- Meningkatkan jaminan threading internal ke library.
- Memperbaiki potensi masalah dengan deduping
LiveData
secara internal.
Perubahan API
- Anda kini dapat membuat instance
Worker
sendiri pada waktu proses dengan menetapkanWorkerFactory
sebagai bagian dariWorkManager.Configuration
. Factory untuk fallback adalahDefaultWorkerFactory
, yang cocok dengan perilaku WorkManager versi sebelumnya.- Konstruktor default untuk
Worker
danNonBlockingWorker
kini 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
ListenableFuture
yang 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
TestDriver
melaluiTestDriver.setInitialDelayMet(UUID)
danTestDriver.setPeriodDelayMet(UUID)
. b/113360060
Perubahan yang Dapat Menyebabkan Gangguan
- Konstruktor default
Worker
danNonBlockingWorker
sudah 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
Data
untuk 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 mengembalikan 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
JobScheduler
terlampaui. b/111569265 - Memperbaiki
ConcurrentModificationException
dalamConstraintTracker
. b/112272753 - Mengubah anotasi jenis nilai yang ditampilkan untuk
Data.getBooleanArray(String)
danData.getIntArray(String)
menjadi@Nullable
, bukan@NonNull
. b/112275229
Perubahan API
Worker
sekarang memperluas class baru,NonBlockingWorker
. Perubahan ini tidak memengaruhi penggunaan saat ini. Di masa mendatang,NonBlockingWorker
akan 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
PeriodicWork
tidak berjalan sesuai jadwal dalam mode Istirahatkan. b/111469837 - Memperbaiki kondisi race saat melacak batasan yang menyebabkan
WorkManager
mengalami error. googlecodelabs/android-workmanager/issues/56 - Membuat
WorkRequest
yang unik saat menggunakanWorkRequest.Builder#build()
. b/111408337 - Mengaktifkan penggunaan
RescheduleReceiver
hanya jika adaWorkRequest
yang 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.INFO
dan 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 bekerja selama kasus backup otomatis yang diketahui. Ini dapat mengakibatkan error. b/110564377
- Memperbaiki penjadwalan ganda
PeriodicWorkRequest
saat menggunakanJobScheduler
. b/110798652 - Memperbaiki masalah
PeriodicWorkRequest
yang 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
BroadcastReceiver
yang 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 mengantrekanWorkRequest
yang 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
PeriodicWorkRequest
kini dijadwalkan ulang dengan benar saat menggunakan implementasi berbasisAlarmManager
.- Memperbaiki potensi ANR saat menjadwal ulang semua pekerja setelah penghentian paksa atau reboot. 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
JobScheduler
setelah reboot perangkat.Pekerjaan dengan pemicu Konten URI sekarang bertahan di seluruh 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
Room
versi1.1.1-rc1
.
Perubahan API
- Menambahkan
getStatusesSync()
, versi sinkron dariWorkContinuation.getStatuses()
. Worker
memiliki kemampuan untuk membedakan pembatalan yang dimulai oleh pengguna dengan penghentian sementara yang diminta oleh sistem operasi.Worker.isStopped()
akan menampilkantrue
jika penghentian jenis apa pun diminta.Worker.isCancelled()
akan menampilkantrue
jika tugas 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 tugas yang dapat dikirim keJobScheduler
atauAlarmManager
. Dengan demikian,WorkManager
tidak akan menggunakan semua slotJobScheduler
yang tersedia. - Menambahkan
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
yang membantu menentukan rentang ID tugasJobScheduler
yang aman untuk digunakan olehWorkManager
. b/79996760 Worker.getRunAttemptCount()
menampilkan jumlah percobaan saat ini untukWorker
tertentu. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
memungkinkan Anda mengantrekanPeriodicWorkRequest
unik. b/79600647WorkManager.cancelAllWork()
membatalkan semuaWorker
. Library yang bergantung padaWorkManager
dapat 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 menghapusWorkRequest
tanpatag
atau saatid
tidak tersedia. b/109572351
Perubahan yang Dapat Menyebabkan Gangguan
- Mengganti nama
Worker.WorkerResult
menjadiWorker.Result
. Worker.onStopped
kini memiliki parameterisCancelled
tambahan yang ditetapkan ketrue
saatWorker
dibatalkan secara eksplisit.
Versi 1.0.0-alpha02
24 Mei 2018
Perbaikan Bug
- Memperbaiki
NullPointerException
padaState.isFinished()
. b/79550068 - Memperbaiki masalah yang menyebabkan
Worker
dijadwalkan 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
Worker
ke thread latar belakang. - Implementasi
AlarmManager
kini melakukan pembersihan dengan benar saat semua pekerjaan yang tertunda selesai. - Memperbaiki kueri SQL pembersihan yang memengaruhi bahasa selain Inggris. b/80065360
- Menambahkan dukungan untuk
float
diData
. b/79443878 Data.Builder.putAll()
kini menampilkan instanceBuilder
. b/79699162- Lebih banyak javadoc dan perbaikan dalam dokumentasi. b/79691663
Perubahan API
Worker
dapat bereaksi saat dihentikan.Worker.isStopped()
dapat digunakan untuk memeriksa apakahWorker
telah dihentikan.Worker.onStopped()
dapat digunakan untuk melakukan operasi pembersihan ringan.Worker.getTags()
API menampilkanSet
tag yang terkait denganWorker
.- Menambahkan overload
javax.time.Duration
untuk API yang menggunakan kombinasi durasi danTimeUnit
. Hal ini dilindungi oleh@RequiresApi(26)
. - Ekstensi
WorkManager
telah dipindahkan dari paketandroidx.work.ktx
ke paketandroix.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
.