WorkManager
Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
---|---|---|---|---|
4 September 2024 | 2.9.1 | - | - | 2.10.0-alpha03 |
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.9.1" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.9.1" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
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.10
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 trace ke Tugas dari
WorkManager
yang membuat 'adb shell dumpsys jobscheduler' jauh lebih mudah dipahami karena akan berisi nama Pekerja yang dieksekusi. Bagian rekaman aktivitas juga ditambahkan di sekitar area utamaWorkManager
.
Perubahan API
- WorkManager 2.10.0 kini dikompilasi dengan SDK 35.
- Memperbaiki pekerja latar depan dengan waktu habis jenis 'layanan singkat' dan 'sinkronisasi data' dan menyebabkan ANR saat
WorkManager
tidak memanggilstopSelf()
. Perbaikan ini hanya berlaku untuk perangkat dengan API 34 dan 35 yang memperkenalkan jenis layanan latar depan. (ca06b2, b/364508145) WorkerParameters
API baru yang memungkinkan pengalihan proses jarak jauh yang diikatWorker
saat menggunakanWorkerFactory
. (Ibdc8a, Ie8a90, I7373f)
Perbaikan Bug
- Memperbaiki error yang disebabkan oleh
WorkManager
yang mencoba memulai ulang pekerja yang berjalan lama (yaitu pekerja latar depan) jika jenis tugas latar depan memiliki izin prasyarat Android 14 yang telah dicabut. (b/333957914) - Menghapus secara manual yang menguraikan akses ke API platform baru karena hal ini terjadi secara otomatis melalui pemodelan API saat menggunakan R8 dengan AGP 7.3 atau yang lebih baru (mis. R8 versi 3.3) dan untuk semua build saat menggunakan AGP 8.1 atau yang lebih baru (mis. 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 memunculkan span trace melalui
@RestrictTo
Tracer
yang dapat dikonfigurasi diWorkManager
. (I17d7f, b/260214125) Configuration.workerCoroutineContext
ditambahkan ke untuk kontrol dispatcher tempatCoroutineWorker
dieksekusi. Hal ini membantu menghindari penggunaanDispatchers.Default
sepenuhnya diWorkManager
. (Icd1b7)- Menambahkan pengendali pengecualian kustom untuk Pekerja (Ib1b74, b/261190695)
OneTimeWorkRequest.Builder
danPeriodicWorkRequest.Builder
kini dapat dibuat denganKClass
, bukanClass
:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()
(Ib55f6)- Class
WorkManager
dimigrasikan ke Kotlin. Sekarang metode yang menampilkanLiveData
,ListenableFuture
, atauFlow
memberikan informasi nullability yang benar. Hal itu bisa membutuhkan perubahan pada bagian kode sumber, 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
NetworkRequest
sebagai batasan untuk pekerja melalui metodeConstraints.setRequiredNetworkRequest
. Hal ini memungkinkan kontrol yang lebih terperinci atas jaringan yang harus dijalankan pekerja ini.
Perubahan API
- Menambahkan kemampuan untuk menentukan
NetworkRequest
sebagai 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
WorkManager
yang mencoba memulai ulang pekerja yang berjalan lama (yaitu pekerja latar depan) jika jenis tugas latar depan memiliki izin prasyarat Android 14 yang telah 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
-dtk. Sebagai gantiLiveData
, progres Pekerja sekarang dapat diamati melalui Flow melaluiWorkManager.getWorkInfosFlow
dan metode serupa. - Sekarang
WorkManager
memberikan petunjuk tentang alasan worker sebelumnya dihentikan. Fungsi ini dapat dikueri dari pekerja itu sendiri melalui metodegetStopReason()
atau dariWorkInfo
melaluigetStopReason()
. - Penjadwalan yang akurat dari 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.UPDATE
harus digunakan dengan teknik ini untuk menghindari pembatalan pekerja yang sedang berjalan saat menjadwalkan pekerja berikutnya. - Pengujian WorkManager dengan pencocokan threading produksi.
ExecutorsMode.PRESERVE_EXECUTORS
dapat digunakan diinitializeTestWorkManager
untuk mempertahankan eksekutor yang ditetapkan diConfiguration
dan untuk menggunakan thread utama yang sebenarnya. - Coroutine API seperti
CoroutineWorker
telah dipindahkan dari artifact work-runtime-ktx tambahan ke runtime kerja artefak utama. work-runtime-ktx sekarang kosong.
Perubahan API
stopReason
telah ditambahkan keWorkInfo
. MembuatstopReason
tersedia setelah pekerja berjalan. Hal ini dapat membantu dalam pelaporanstopReason
dengan cara yang dapat digunakan, karena setelah pekerja dihentikan, aplikasi itu sendiri dapat dihentikan dengan sangat cepat. (I21386)- Mengizinkan
Clock
ditetapkan melalui konfigurasi dan digunakan untuk mendorong pengurutan eksekusi pengujian Pekerja. (Ic586e) - Metode
getStopReason()
telah ditambahkan keListenableWorker
yang memberikan petunjuk mengapa pekerja dihentikan. (I07060) - Menambahkan
WorkManagerTestInitHelper#closeWorkDatabase()
untuk menghindari peringatan Closeguard tentang kebocoran resource. (Ia8d49) - Konstruktor
WorkInfo
kini bersifat publik, yang dapat berguna dalam pengujian. (Ia00b6, b/209145335) work-runtime-ktx
kini kosong,CoroutineWorker
dan utilitas khusus Kotlin lainnya kini tersedia di artefak runtime kerja utama. (I71a9a)- Menambahkan metode
setNextScheduleTimeOverride
, yang memungkinkan penetapan jadwal kerja berkala yang akurat (I3b4da) - Menambahkan
getNextScheduleTimeMillis
untuk mendapatkan info waktu proses terjadwal ditambahkan keWorkInfo
. (I797e4) - Info keterlambatan dan periodisitas awal ditambahkan ke
WorkInfo
. (I52f2f) - Menambahkan metode mengamati pekerja melalui Flow melalui metode
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) - Menambahkan anotasi
@RequiresApi(...)
yang tidak ada keConstraints
' konstruktor dan properti. Objek tersebut kini disejajarkan dengan anotasi terkait pada penyetel diConstraints.Builder
yang ada dari versi awalWorkManager
. (I6d7d2) WorkManager
kini memiliki batas terpisah untuk pekerja URI konten untuk memberi mereka slot terjamin diJobScheduler
guna mencegah pembaruan konten yang hilang karena pemuatan yang tinggi. Batasnya 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 berhenti yang ditampilkan oleh
WorkInfo.stopReason
danListenableWorker.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
WorkManager
memberikan petunjuk tentang alasan worker sebelumnya dihentikan. Fungsi ini dapat dikueri dari pekerja itu sendiri melalui metodegetStopReason()
atau dariWorkInfo
melaluigetStopReason()
.
Perubahan API
stopReason
telah ditambahkan keWorkInfo
. Fragmen ini menyediakanstopReason
setelah pekerja berjalan. Hal ini dapat berguna dalam pelaporanstopReason
dengan cara yang dapat digunakan, karena begitu pekerja dihentikan, aplikasi itu sendiri dapat dihentikan dengan sangat cepat. (I21386)- Izinkan Clock disetel melalui konfigurasi dan digunakan untuk mendorong pengurutan eksekusi pengujian Pekerja. (Ic586e)
- Metode
getStopReason()
telah ditambahkan keListenableWorker
yang memberikan petunjuk mengapa pekerja dihentikan. (I07060) - Menambahkan
WorkManagerTestInitHelper#closeWorkDatabase()
untuk menghindari peringatan Closeguard tentang kebocoran resource. (Ia8d49)
Perbaikan Bug
- Menambahkan kemampuan untuk mengabaikan
overrideNextScheduleTime
menggunakanTestDriver
dan memperbaiki masalah terkait 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 ini.
Fitur Baru
- Kemampuan observasi melalui
Flow
-dtk. Sebagai gantiLiveData
, progres Pekerja sekarang dapat diamati melalui Flow melaluiWorkManager.getWorkInfosFlow
dan metode serupa. - Penjadwalan yang akurat dari 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.UPDATE
harus digunakan dengan teknik ini untuk menghindari pembatalan pekerja yang sedang berjalan saat menjadwalkan pekerja berikutnya. - Pengujian
WorkManager
dengan pencocokan threading produksi.ExecutorsMode.PRESERVE_EXECUTORS
dapat digunakan untuk mempertahankan eksekutor yang ditetapkan diConfiguration
dan untuk menggunakan thread utama yang sebenarnya. - Coroutine API seperti
CoroutineWorker
telah dipindahkan dari artefak tambahanwork-runtime-ktx
ke artefak utamawork-runtime
.work-runtime-ktx
sekarang kosong.
Perubahan API
- Konstruktor
WorkInfo
kini bersifat publik, yang dapat berguna dalam pengujian. (Ia00b6, b/209145335) work-runtime-ktx
sekarang kosong,CoroutineWorker
dan utilitas khusus kotlin lainnya kini tersedia di artefakwork-runtime
utama. (I71a9a)- Menambahkan metode
setNextScheduleTimeOverride
, yang memungkinkan penetapan jadwal kerja berkala yang akurat (I3b4da) - Mengganti nama
getEarliestRunTimeMillis
menjadigetNextScheduleTimeMillis
. (I2bd7a) - Info waktu proses terjadwal berikutnya ditambahkan ke
WorkInfo
. (I797e4) - Info keterlambatan dan periodisitas awal ditambahkan ke
WorkInfo
. (I52f2f) - Menambahkan metode mengamati pekerja melalui Flow melalui metode
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) - Menambahkan anotasi
@RequiresApi(...)
yang tidak ada ke Constraints' konstruktor dan properti. Objek tersebut kini disejajarkan dengan anotasi terkait pada penyetel diConstraints.Builder
yang ada dari versi awalWorkManager
. (I6d7d2) WorkManager
kini memiliki batas terpisah untuk pekerja URI konten untuk memberi mereka slot terjamin diJobScheduler
guna mencegah pembaruan konten yang hilang karena pemuatan yang 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
RescheduleReceiver
yang sebelumnya tidak menangani dua siaran simultan 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
WorkRequests
dengan cara yang tidak mengganggu telah ditambahkan, sehingga mempertahankan waktu antrean asli, perantaian, dll. Lihat postingan blog yang mendetail tentang fitur ini, serta javadocs untukWorkManager.updateWork
danExistingPeriodicWorkPolicy.UPDATE
untuk detail selengkapnya.
Perubahan API
WorkManager.updateWork
ditambahkan untuk memperbarui pekerjaan yang mempertahankan waktu antrean asli dan perantaiannya. (I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATE
telah ditambahkan. Kebijakan ini memungkinkan pembaruan pekerjaan berkala menurut namanya. Hal ini mirip denganREPLACE
yang 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.REPLACE
tidak digunakan lagi untuk mengurangi kebingungan antaraREPLACE
danUPDATE
yang memiliki nama sangat mirip. Jika Anda masih ingin mempertahankan semantik sebelumnya dariREPLACE
,CANCEL_AND_REENQUEUE
yang baru ditambahkan dan identik denganREPLACE
dapat 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
&PeriodicWorkRequest
dipindahkan dariandroidx.work:work-runtime-ktx
keandroidx.work:work-runtime
(I0010f, b/209145335) - Metode helper
WorkQuery.fromIds
,WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
,WorkQuery.fromTags
ditambahkan untuk membuatWorkQuery
secara langsung. (b/199919736) (If48f2, b/199919736) - Menambahkan
getForegroundInfo
keWorker
. (Ic1ead) RxWorker
untuk RxJava 2 dan RxJava 3 kini memilikisetForeground
yang menampilkanCompletable
yang dapat digunakan sebagai penggantisetForegroundInfoAsync
yang menampilkanListenableFuture
RxWorker
untuk RxJava 2 dan RxJava 3 memilikigetForegroundInfo
yang menampilkanSingle
yang dapat digunakan sebagai penggantigetForegroundInfoAsync
yang 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
WorkManager
telah 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
@RequiresPermission
ke API yang memerlukan pemberian izinPOST_NOTIFICATIONS
di SDK 33 dan yang lebih baru. (Ie542e, b/238790278) - Memperluas pembatalan di
CoroutineScope
keListenableFuture
saat 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
equals
diWorkInfo
yang 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.updateWork
atauWorkManager.enqueueUniquePeriodicWork
menggunakanExistingPeriodicWorkPolicy.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
WorkRequests
dengan cara yang tidak mengganggu telah ditambahkan, sehingga mempertahankan waktu antrean asli, perantaian, dll. LihatWorkManager.updateWork
danExistingPeriodicWorkPolicy.UPDATE
untuk detail selengkapnya.
Perubahan API
WorkManager.updateWork
ditambahkan untuk memperbarui pekerjaan yang mempertahankan waktu antrean asli dan perantaiannya. (I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATE
telah ditambahkan. Kebijakan ini memungkinkan pembaruan tugas berkala menurut namanya. Ini mirip denganREPLACE
yang 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.REPLACE
tidak digunakan lagi untuk mengurangi kebingungan antaraREPLACE
danUPDATE
yang memiliki nama sangat mirip. Jika Anda masih ingin mempertahankan semantik sebelumnya dariREPLACE
,CANCEL_AND_REENQUEUE
yang baru ditambahkan dan identik denganREPLACE
dapat digunakan. (I985ed, b/219446409)- Menambahkan kemampuan untuk mengintersep pengecualian penjadwalan dengan menentukan
SchedulingExceptionHandler
. (I033eb) - Helper inline untuk
OneTimeWorkRequest
&PeriodicWorkRequest
dipindahkan dariandroidx.work:work-runtime-ktx
keandroidx.work:work-runtime
(I0010f, b/209145335)
Perbaikan Bug
- Menambahkan
@RequiresPermission
ke 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
WorkManager
telah 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.fromTags
ditambahkan untuk membuat WorkQuery secara langsung. (If48f2, b/199919736) - Menambahkan metode BuildCompat eksperimental untuk SDK mendatang (Iafd82, b/207528937)
- Menambahkan
getForegroundInfo
keWorker
. (Ic1ead) - Metode helper
WorkQuery.fromIds
untuk membuat WorkQuery langsung dari ID ditambahkan. (Ie5bdf, b/199919736) - RxWorker sekarang memiliki
setForeground
yang menampilkanCompletable
yang dapat digunakan sebagai gantisetForegroundInfoAsync
yang menampilkanListenableFuture
. (I85156) - RxWorker untuk RxJava 2 sekarang memiliki
getForegroundInfo
yang menampilkanSingle
yang dapat digunakan sebagai gantigetForegroundInfoAsync
yang menampilkanListenableFuture
. (I21c91, b/203851459) - RxWorker untuk RxJava 3 sekarang memiliki
getForegroundInfo
yang menampilkanSingle
yang dapat digunakan sebagai gantigetForegroundInfoAsync
yang menampilkanListenableFuture
. (I1ca8a) - RxWorker sekarang memiliki
setForeground
yang menampilkanCompletable
yang dapat digunakan sebagai gantisetForegroundInfoAsync
yang menampilkanListenableFuture
. (I992a3, b/203851459)
Perbaikan Bug
- Memperluas pembatalan di
CoroutineScope
keListenableFuture
saat 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
CoroutineScope
disebarkan keListenableFuture
saat 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
@ExperimentalExpeditedWork
API 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
: MenambahkanRemoteCoroutineWorker
yang merupakan implementasiRemoteListenableWorker
yang 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
: MembuatWorkManagerInitializer
menjadi publik sehinggaandroidx.startup.Initializer
lainnya 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
PendingIntent
menjadi 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
WorkRequest
sebagai diprioritaskan.API ini adalah pengganti API
setForegroundAsync(...)
/setForeground(...)
yang sekarang tidak digunakan lagi.Saat menggunakan
setExpedited(...)
, WorkManager mendelegasikan ke tugas yang diprioritaskan diJobScheduler
mulai Android 12, sekaligus menyediakan kompatibilitas mundur pada versi Android sebelumnya dengan melakukan delegasi ke layanan latar depan.
Perubahan API
- Menambahkan dukungan untuk
WorkRequest
yang 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.startup
untuk melakukan inisialisasi WorkManager. Jika sebelumnya Anda menggunakantools:node="remove"
yang digunakanContentProvider
untuk 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
RemoteCoroutineWorker
yang 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
RemoteWorkManager
sekarang terlepas dengan benar dariRemoteWorkManagerService
yang memungkinkanRemoteWorkManagerService
melakukan pembersihan dengan benar. aosp/1730694RemoteListenableWorker
sekarang terlepas dengan benar dariRemoteWorkerService
yang memungkinkanRemoteWorkerService
melakukan pembersihan dengan benar. aosp/1743817ForceStopRunnable
kini 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
RemoteCoroutineWorker
yang merupakan implementasiRemoteListenableWorker
yang dapat diikat ke proses jarak jauh. (I30578)
Perubahan API
- Menambahkan dukungan untuk batasan jaringan
TEMPORARILY_UNMETERED
. (I08d5e) - Dukungan pekerja multiproses untuk
setProgressAsync()
. (Ib6d08) - Membuat
WorkManagerInitializer
menjadi publik sehinggaandroidx.startup.Initializer
lainnya 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
WorkManager
kini menggunakanandroidx.startup
untuk menginisialisasi WorkManager. Sebelumnya, ini dilakukan olehandroidx.work.impl.WorkManagerInitializer
. (aosp/1608813)Jika sebelumnya Anda menggunakan
tools:node="remove"
yang digunakanContentProvider
untuk 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 menampilkanoutputData
ListenableWorker. (Ie51e3)
Perbaikan Bug
- Menambahkan solusi untuk bug OEM yang menyebabkan
SecurityException
ditampilkan saat menggunakanAlarmManager
API. (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-multiprocess
baru 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,
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 ini.
Perbaikan Bug
- Memperbaiki bug ketika
getWorkInfosLiveData
tidak 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
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 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 ini.
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 ini.
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 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
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 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)
.processName
adalah nama proses yang sepenuhnya memenuhi syarat dengan formatpackageName:processName
(misalnyacom.example:remote
). - Sekumpulan API baru:
RemoteWorkManager
danRemoteWorkContinuation
untuk permintaan pekerjaanenqueue
,cancel
, danquery
. API ini tidak menyertakan varianLiveData
untuk menghindari pertentangan 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 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
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 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 ini.
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 mengamati batas penjadwalan (tetapi tetap dibatasi untuk ukuranExecutor
yang 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,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 mengkueriWorkInfo
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:
- WorkRequest yang diselesaikan dalam 24 jam terakhir.
- WorkRequests yang sedang BERJALAN.
- WorkRequest 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 ditampilkan. (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 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
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 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 ini.
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 mengkueriWorkInfo
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 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
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:- WorkRequest yang diselesaikan dalam 24 jam terakhir.
- WorkRequests yang sedang BERJALAN.
- WorkRequest 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
- Menghentikan penggunaan
setProgress()
diRxWorker
karena 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
Worker
berdurasi panjang 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 ini.
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 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
Notification
untukWorker
berdurasi panjang 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 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-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 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.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
berdurasi 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 ini.
Fitur baru
- Menambahkan aturan lint baru yang mencegah error developer karena penerapan
androidx.work.Configuration.Provider
yang 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 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 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
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, Worker 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 pembuatan 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 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
. 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. - 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
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
.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.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
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
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 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-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 level 22) 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
- 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
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 mempertimbangkan untuk menambahkan suatu 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 pengambil dan penyetel 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 pemulihan dari penghentian 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
Result
null
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 mempertimbangkan untuk menambahkan suatu 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 pengambil dan penyetel 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. - Penyetel 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
padaWorkManager
lebih dari sekali per proses kini akan menampilkanIllegalStateException
. Perubahan ini dapat menyebabkan gangguan.
Perbaikan Bug
WorkRequest.Builder
dalam artefakwork-runtime-ktx
kini menggunakanListenableWorker
. Perbaikan b/117666259- Pastikan waktu percobaan berikutnya untuk
PeriodicWork
ditetapkan 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
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
. - Penyetel 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
padaWorkManager
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 issue tracker 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*
sinkron, 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 satuWorkContinuation
atau lebih, 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 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)
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 de-duplikasi
LiveData
secara internal.
Perubahan API
- Anda kini dapat membuat instance
Worker
sendiri pada runtime 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 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
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 menjalankan pekerjaan selama kasus pencadangan 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 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
JobScheduler
setelah 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
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 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 keJobScheduler
atauAlarmManager
. Dengan demikian,WorkManager
tidak akan menggunakan semua slotJobScheduler
yang tersedia. - Menambahkan
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
yang membantu menentukan rentang ID pekerjaanJobScheduler
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 lokalitas 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
. Ini dilindungi oleh@RequiresApi(26)
. - Ekstensi
WorkManager
telah dipindahkan dari paketandroidx.work.ktx
ke 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
.