WorkManager

WorkManager API memudahkan penjadwalan tugas-tugas asinkron yang dapat ditangguhkan dan harus berjalan tanpa masalah. API ini memungkinkan Anda membuat tugas dan memberikannya ke WorkManager untuk dijalankan saat batasan kerja tercapai.
Update Terbaru Rilis Stabil Kandidat Rilis Rilis Beta Rilis Alfa
30 Oktober 2024 2.9.1 - - -

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.

Laporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Versi 2.10

Versi 2.10.0

30 Oktober 2024

androidx.work:work-*:2.10.0 dirilis. Versi 2.10.0 berisi commit ini.

Perubahan signifikan sejak versi 2.9.1

  • Menambahkan tag rekaman aktivitas ke 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 utama WorkManager.
  • Configuration.workerCoroutineContext ditambahkan untuk mengontrol dispatcher tempat CoroutineWorker dieksekusi.
  • Developer dapat menentukan NetworkRequest sebagai batasan untuk pekerja melalui metode Constraints.setRequiredNetworkRequest. Hal ini memungkinkan kontrol yang lebih terperinci atas jaringan yang harus dijalankan pekerja ini.
  • WorkManager 2.10.0 kini dikompilasi dengan SDK 35 dan berisi berbagai perubahan untuk kompatibilitas SDK 35.

Versi 2.10.0-rc01

24 Oktober 2024

androidx.work:work-*:2.10.0-rc01 dirilis. Versi 2.10.0-rc01 berisi commit ini.

Versi 2.10.0-beta01

2 Oktober 2024

androidx.work:work-*:2.10.0-beta01 dirilis. Versi 2.10.0-beta01 berisi commit ini.

Versi 2.10.0-alpha04

18 September 2024

androidx.work:work-*:2.10.0-alpha04 dirilis. Versi 2.10.0-alpha04 berisi commit ini.

Perubahan API

  • Tambahkan alasan penghentian STOP_REASON_FOREGROUND_SERVICE_TIMEOUT saat pekerja latar depan dihentikan karena waktu tunggu eksekusi berdasarkan jenis layanan latar depan. (Ibd0af)

Versi 2.10.0-alpha03

4 September 2024

androidx.work:work-*:2.10.0-alpha03 dirilis. Versi 2.10.0-alpha03 berisi commit ini.

Fitur Baru

  • Menambahkan tag rekaman aktivitas ke 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 utama WorkManager.

Perubahan API

  • WorkManager 2.10.0 kini dikompilasi dengan SDK 35.
  • Memperbaiki pekerja latar depan dari jenis 'layanan singkat' dan 'sinkronisasi data' yang habis waktunya dan menyebabkan ANR saat WorkManager tidak memanggil stopSelf(). 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 peralihan proses jarak jauh yang diikat Worker saat menggunakan WorkerFactory. (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 garis besar manual 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 (misalnya, R8 versi 3.3) dan untuk semua build saat menggunakan AGP 8.1 atau yang lebih baru (misalnya, D8 versi 8.1). Klien yang tidak menggunakan AGP disarankan untuk mengupdate ke D8 versi 8.1 atau yang lebih baru. Baca artikel ini untuk informasi selengkapnya. (Ia60e0, b/345472586)

Versi 2.10.0-alpha02

17 April 2024

androidx.work:work-*:2.10.0-alpha02 dirilis. Versi 2.10.0-alpha02 berisi commit ini.

Perubahan API

  • Menambahkan kemampuan untuk memunculkan span rekaman aktivitas melalui @RestrictTo Tracer yang dapat dikonfigurasi di WorkManager. (I17d7f, b/260214125)
  • Configuration.workerCoroutineContext ditambahkan ke untuk kontrol dispatcher tempat CoroutineWorker dieksekusi. Hal ini membantu menghindari penggunaan Dispatchers.Default sepenuhnya di WorkManager. (Icd1b7)
  • Menambahkan pengendali pengecualian kustom untuk Pekerja (Ib1b74, b/261190695)
  • OneTimeWorkRequest.Builder dan PeriodicWorkRequest.Builder kini dapat dibuat dengan KClass, bukan Class: val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build() (Ib55f6)
  • Class WorkManager dimigrasikan ke Kotlin. Sekarang metode yang menampilkan LiveData, ListenableFuture, atau Flow memberikan informasi nullability yang benar. Perubahan ini dapat memerlukan perubahan pada kode sumber klien, jika asumsi nullability dalam kode tersebut salah. (If6757)

Versi 2.10.0-alpha01

24 Januari 2024

androidx.work:work-*:2.10.0-alpha01 dirilis. Versi 2.10.0-alpha01 berisi commit ini.

Fitur Baru

  • Developer dapat menentukan NetworkRequest sebagai batasan untuk pekerja melalui metode Constraints.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) saat jenis latar depan pekerjaan memiliki izin prasyarat Android 14 yang dicabut. (b/333957914)

Versi 2.9.0

29 November 2023

androidx.work:work-*:2.9.0 dirilis. Versi 2.9.0 berisi commit ini.

Perubahan penting sejak versi 2.8.0

  • Kemampuan observasi melalui Flow. Sebagai ganti LiveData, progres Pekerja kini dapat diamati melalui Flow melalui WorkManager.getWorkInfosFlow dan metode serupa.
  • Sekarang WorkManager memberikan petunjuk tentang alasan worker sebelumnya dihentikan. Ini dapat dikueri dari pekerja itu sendiri melalui metode getStopReason() atau dari WorkInfo melalui getStopReason().
  • 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 drift. ExistingPeriodicWorkPolicy.UPDATE harus digunakan dengan teknik ini untuk menghindari pembatalan pekerja yang sedang berjalan saat menjadwalkan pekerja berikutnya.
  • Pengujian WorkManager dengan produksi pencocokan threading. ExecutorsMode.PRESERVE_EXECUTORS dapat digunakan di initializeTestWorkManager untuk mempertahankan eksekutor yang ditetapkan di Configuration dan untuk menggunakan thread utama yang sebenarnya.
  • Coroutines API seperti CoroutineWorker telah dipindahkan dari artefak tambahan work-runtime-ktx ke work-runtime artefak utama. work-runtime-ktx kini kosong.

Perubahan API

  • stopReason telah ditambahkan ke WorkInfo. Tindakan ini akan menyediakan stopReason setelah pekerja berjalan. Hal ini dapat membantu dalam pelaporan stopReason 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 ke ListenableWorker yang memberikan petunjuk mengapa pekerja dihentikan. (I07060)
  • Menambahkan WorkManagerTestInitHelper#closeWorkDatabase() untuk menghindari peringatan Closeguard tentang resource yang bocor. (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 setelan jadwal kerja berkala yang akurat (I3b4da)
  • Menambahkan getNextScheduleTimeMillis untuk mendapatkan info waktu proses terjadwal yang ditambahkan ke WorkInfo. (I797e4)
  • Info keterlambatan dan periodisitas awal ditambahkan ke WorkInfo. (I52f2f)
  • Menambahkan metode amati pekerja melalui Flow melalui metode getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow (If122a)
  • Menambahkan anotasi @RequiresApi(...) yang tidak ada ke konstruktor dan properti Constraints. Sekarang, keduanya diselaraskan dengan anotasi yang sesuai pada penyetel di Constraints.Builder yang ada dari versi awal WorkManager. (I6d7d2)
  • WorkManager kini memiliki batas terpisah untuk pekerja uri konten guna memberi mereka slot yang dijamin di JobScheduler untuk mencegah pembaruan konten yang hilang saat beban tinggi. Batasnya dapat dikonfigurasi melalui Configuration.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

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 pekerja sebelumnya dihentikan. Ini dapat dikueri dari pekerja itu sendiri melalui metode getStopReason() atau dari WorkInfo melalui getStopReason().

Perubahan API

  • stopReason telah ditambahkan ke WorkInfo. Fragmen ini menyediakan stopReason setelah pekerja berjalan. Hal ini dapat membantu dalam pelaporan stopReason dengan cara yang dapat digunakan, karena setelah 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 ke ListenableWorker yang memberikan petunjuk alasan pekerja dihentikan. (I07060)
  • Menambahkan WorkManagerTestInitHelper#closeWorkDatabase() untuk menghindari peringatan Closeguard tentang resource yang bocor. (Ia8d49)

Perbaikan Bug

  • Menambahkan kemampuan untuk mengabaikan overrideNextScheduleTime menggunakan TestDriver 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 ganti LiveData, progres Pekerja kini dapat diamati melalui Flow melalui WorkManager.getWorkInfosFlow dan metode serupa.
  • Penjadwalan pekerja berkala yang akurat 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 drift. ExistingPeriodicWorkPolicy.UPDATE harus digunakan dengan teknik ini untuk menghindari pembatalan pekerja yang sedang berjalan saat menjadwalkan pekerja berikutnya.
  • Pengujian WorkManager dengan produksi pencocokan thread. ExecutorsMode.PRESERVE_EXECUTORS dapat digunakan untuk mempertahankan eksekutor yang ditetapkan di Configuration dan untuk menggunakan thread utama yang sebenarnya.
  • Coroutine API seperti CoroutineWorker telah dipindahkan dari artefak tambahan work-runtime-ktx ke artefak utama work-runtime. work-runtime-ktx sekarang kosong.

Perubahan API

  • 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 work-runtime utama. (I71a9a)
  • Menambahkan metode setNextScheduleTimeOverride, yang memungkinkan setelan jadwal kerja berkala yang akurat (I3b4da)
  • Mengganti nama getEarliestRunTimeMillis menjadi getNextScheduleTimeMillis. (I2bd7a)
  • Info waktu operasi terjadwal berikutnya ditambahkan ke WorkInfo. (I797e4)
  • Info keterlambatan dan periodisitas awal ditambahkan ke WorkInfo. (I52f2f)
  • Menambahkan metode amati pekerja melalui Flow melalui metode getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow (If122a)
  • Menambahkan anotasi @RequiresApi(...) yang tidak ada ke konstruktor dan properti Constraints. Sekarang, keduanya diselaraskan dengan anotasi yang sesuai pada penyetel di Constraints.Builder yang ada dari versi awal WorkManager. (I6d7d2)
  • WorkManager kini memiliki batas terpisah untuk pekerja uri konten guna memberi mereka slot yang dijamin di JobScheduler untuk mencegah pembaruan konten yang hilang saat beban tinggi. Batas dapat dikonfigurasi melalui Configuration.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 serentak dengan benar. (b/236906724)

Versi 2.8.0

8 Februari 2023

androidx.work:work-*:2.8.0 dirilis. Versi 2.8.0 berisi commit ini.

Perubahan penting sejak versi 2.7.0

Fitur Baru

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 dengan REPLACE 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 antara REPLACE dan UPDATE yang memiliki nama sangat mirip. Jika Anda masih ingin mempertahankan semantik sebelumnya dari REPLACE, CANCEL_AND_REENQUEUE yang baru ditambahkan dan identik dengan REPLACE 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 dari androidx.work:work-runtime-ktx ke androidx.work:work-runtime (I0010f, b/209145335)
  • Metode helper WorkQuery.fromIds, WorkQuery.fromStates, WorkQuery.fromUniqueWorkNames, WorkQuery.fromTags ditambahkan untuk membuat WorkQuery secara langsung. (b/199919736) (If48f2, b/199919736)
  • Menambahkan getForegroundInfo ke Worker. (Ic1ead)
  • RxWorker untuk RxJava 2 dan RxJava 3 kini memiliki setForeground yang menampilkan Completable yang dapat digunakan sebagai pengganti setForegroundInfoAsync yang menampilkan ListenableFuture
  • RxWorker untuk RxJava 2 dan RxJava 3 memiliki getForegroundInfo yang menampilkan Single yang dapat digunakan sebagai pengganti getForegroundInfoAsync yang menampilkan ListenableFuture. (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, menambahkan getConfiguration() API baru untuk developer library guna mendapatkan konfigurasi yang diinisialisasi dengan WorkManager. (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 izin POST_NOTIFICATIONS di SDK 33 dan yang lebih baru. (Ie542e, b/238790278)
  • Memperluas pembatalan di CoroutineScope ke ListenableFuture saat menggunakan suspendCancellableCoroutine.

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 di WorkInfo 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() dan WorkerParameters.getGeneration() telah ditambahkan dan akan menampilkan generasi pekerja. Pekerja memiliki beberapa generasi, jika diperbarui melalui WorkManager.updateWork atau WorkManager.enqueueUniquePeriodicWork menggunakan ExistingPeriodicWorkPolicy.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 inisialisasi WorkManager. (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. Lihat WorkManager.updateWork dan ExistingPeriodicWorkPolicy.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 dengan REPLACE 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 antara REPLACE dan UPDATE yang memiliki nama sangat mirip. Jika Anda masih ingin mempertahankan semantik sebelumnya dari REPLACE, CANCEL_AND_REENQUEUE yang baru ditambahkan dan identik dengan REPLACE dapat digunakan. (I985ed, b/219446409)
  • Menambahkan kemampuan untuk mengintersep pengecualian penjadwalan dengan menentukan SchedulingExceptionHandler. (I033eb)
  • Helper inline untuk OneTimeWorkRequest & PeriodicWorkRequest dipindahkan dari androidx.work:work-runtime-ktx ke androidx.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, menambahkan getConfiguration() API baru untuk developer library guna mendapatkan konfigurasi yang diinisialisasi dengan WorkManager. (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 ke Worker. (Ic1ead)
  • Metode helper WorkQuery.fromIds untuk membuat WorkQuery langsung dari ID ditambahkan. (Ie5bdf, b/199919736)
  • RxWorker sekarang memiliki setForeground yang menampilkan Completable yang dapat digunakan sebagai ganti setForegroundInfoAsync yang menampilkan ListenableFuture. (I85156)
  • RxWorker untuk RxJava 2 sekarang memiliki getForegroundInfo yang menampilkan Single yang dapat digunakan sebagai ganti getForegroundInfoAsync yang menampilkan ListenableFuture. (I21c91, b/203851459)
  • RxWorker untuk RxJava 3 sekarang memiliki getForegroundInfo yang menampilkan Single yang dapat digunakan sebagai ganti getForegroundInfoAsync yang menampilkan ListenableFuture. (I1ca8a)
  • RxWorker sekarang memiliki setForeground yang menampilkan Completable yang dapat digunakan sebagai ganti setForegroundInfoAsync yang menampilkan ListenableFuture. (I992a3, b/203851459)

Perbaikan Bug

  • Memperluas pembatalan di CoroutineScope ke ListenableFuture saat menggunakan suspendCancellableCoroutine. (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 ke ListenableFuture saat menggunakan suspendCancellableCoroutine. (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 menggunakan ListenableWorker.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

Perubahan API

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 di JobScheduler 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 menggunakan tools:node="remove" yang digunakan ContentProvider 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 dari RemoteWorkManagerService yang memungkinkan RemoteWorkManagerService melakukan pembersihan dengan benar. aosp/1730694
  • RemoteListenableWorker sekarang terlepas dengan benar dari RemoteWorkerService yang memungkinkan RemoteWorkerService melakukan pembersihan dengan benar. aosp/1743817
  • ForceStopRunnable 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 implementasi RemoteListenableWorker 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 sehingga androidx.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 menggunakan androidx.startup untuk menginisialisasi WorkManager. Sebelumnya, ini dilakukan oleh androidx.work.impl.WorkManagerInitializer. (aosp/1608813)

    Jika sebelumnya Anda menggunakan tools:node="remove" yang digunakan ContentProvider 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 menampilkan outputData ListenableWorker. (Ie51e3)

Perbaikan Bug

  • Menambahkan solusi untuk bug OEM yang menyebabkan SecurityException ditampilkan saat menggunakan AlarmManager 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 mengelola WorkRequest. RemoteWorkManager selalu menjangkau proses yang ditetapkan. Penjadwal dalam proses juga berjalan di proses yang ditetapkan.
  • Terkadang, ActivityManager tidak dapat membuat instance JobService untuk memulai tugas. Hal ini menyebabkan tugas dasar dihentikan secara diam-diam karena bug platform. WorkManager kini memastikan adanya tugas cadangan untuk setiap WorkRequest ketika Application 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 dilacak WorkRequest setelah WorkRequest selesai. Durasinya adalah 7 hari sebelumnya. Ini telah dikurangi menjadi 1 hari + durasi keepResultsForAtLeast. (aosp/1419708)
  • TestListenableWorkerBuilder kini mendukung class nyata yang mencakup ListenableWorker 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 berbasis WorkQuery. (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 menghentikan ListenableWorker 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 jumlah WorkRequest 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 dengan ENQUEUED 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 dan TestWorkerBuilder 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 dan RemoteWorkContinuation. 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 mengkueri WorkInfo. (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 format packageName:processName (misalnya com.example:remote).
    • Sekumpulan API baru: RemoteWorkManager dan RemoteWorkContinuation untuk permintaan pekerjaan enqueue, cancel, dan query. API ini tidak menyertakan varian LiveData untuk menghindari pertentangan resource SQLite di beberapa proses. Semua panggilan ke enqueue, cancel, dan query diteruskan ke proses aplikasi primary menggunakan AIDL dan menampilkan ListenableFuture dengan lancar. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)

Perubahan API

  • WorkManager sekarang lebih agresif dalam memangkas WorkRequest yang sudah selesai dan tidak memiliki dependensi yang belum selesai. Durasi buffering berubah dari 7 hari menjadi 1 hari. (aosp/1419708)

Perbaikan Bug

  • WorkManager kini merekonsiliasi tugas secara proaktif sehingga tugas WorkRequest dan JobScheduler disinkronkan saat WorkManager 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

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 melacak WorkRequest yang mungkin dijalankan di masa mendatang, termasuk PeriodicWorkRequests. Scheduler dalam proses juga tidak mengamati batas penjadwalan (tetapi tetap dibatasi untuk ukuran Executor 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 memperkenalkan RunnableScheduler 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 menggunakan WorkQuery. Ini berguna saat developer ingin mengkueri WorkInfo dengan kombinasi beberapa atribut. Untuk mengetahui informasi selengkapnya, lihat WorkQuery.Builder.fromStates(...), WorkQuery.Builder. fromTags(...), atau WorkQuery.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 dengan APPEND, 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 menggunakan setForegroundAsync() 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 menjadi public saat menggunakan WorkerFactory default. (aosp/1291262)
  • Panggilan ke setForegroundAsync() yang tidak selesai sebelum penyelesaian ListenableWorker sekarang akan ditandai melalui IllegalStateException pada ListenableFuture yang ditampilkan. (aosp/1262743)

  • Memperbaiki bug ketika ForegroundService tidak dihentikan setelah Worker latar depan terhenti. (b/155579898, aosp/1302153)

  • Memperbaiki bug ketika WorkManager mencoba menjalankan beberapa instance Worker 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 setelah Worker latar depan terhenti. (b/155579898, aosp/1302153)
  • Memperbaiki bug ketika WorkManager mencoba menjalankan beberapa instance Worker 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 menjadi public saat menggunakan WorkerFactory default. (aosp/1291262)

Perubahan API

  • Memanggil setProgressAsync() setelah ListenableWorker menyelesaikan eksekusi sekarang akan menandakan Exception melalui ListenableFuture. (aosp/1285494)
  • WorkQuery.Builder sekarang ditandai final. (aosp/1275037)
  • Metode factory WorkQuery.Builder, yaitu withStates, withTags, dan withUniqueWorkNames, telah diganti namanya masing-masing menjadi fromStates, fromTags, dan fromUniqueWorkNames. (aosp/1280287)

Perbaikan Bug

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 memerlukan Constraints.setRequiresCharging(...) dan Constraints.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 menggunakan WorkQuery. Ini berguna saat developer ingin mengkueri WorkInfo dengan kombinasi beberapa atribut. Untuk mengetahui informasi selengkapnya, lihat WorkQuery.Builder withStates(...), WorkQuery.Builder withTags(...), atau WorkQuery.Builder withUniqueWorkNames(...). (aosp/1253230, b/143847546)

  • Panggilan ke setForegroundAsync() yang tidak selesai sebelum penyelesaian ListenableWorker sekarang akan ditandai melalui IllegalStateException pada ListenableFuture 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 melacak WorkRequest yang mungkin dijalankan di masa mendatang, termasuk PeriodicWorkRequest. Penjadwal dalam proses juga tidak mengamati batas penjadwalan (tetapi tetap dibatasi untuk ukuran Executor yang digunakan oleh WorkManager). Artinya, sekarang aplikasi dapat menjalankan lebih banyak WorkRequest 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 menggunakan setForegroundAsync() API. (b/147873061, aosp/1215915)
    • Menentukan id JobScheduler yang harus digunakan oleh WorkManager saat menggunakan JobService API secara langsung. (aosp/1223567)

Perubahan API

  • Menambahkan ExistingWorkPolicy.APPEND_OR_REPLACE yang mirip dengan APPEND, tetapi menggantikan rantai yang memiliki prasyarat yang dibatalkan atau gagal. (b/134613984, aosp/1199640)

  • Menyediakan kemampuan untuk menambahkan RunnableScheduler kustom untuk melacak WorkRequest yang perlu dijalankan di masa mendatang. Ini digunakan oleh Penjadwal dalam proses. (aosp/1203944)

Perbaikan Bug

  • Menghentikan penggunaan setProgress() di RxWorker karena sebelumnya menampilkan Single<Void> yang merupakan jenis yang mustahil. Menambahkan API baru setCompletableProgress() yang menampilkan Completable; 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

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 untuk Worker berdurasi panjang yang dijalankan saat Service latar depan aktif. (aosp/1218539, b/147249312)
  • WorkManager sekarang bergantung pada androidx.sqlite:sqlite-framework:2.1.0 stabil. (aosp/1217729)
  • Aturan lint telah ditambahkan untuk memastikan bahwa foregroundServiceType ditetapkan dalam AndroidManifest.xml saat menggunakan foregroundServiceType dalam ForegroundInfo. (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 dependensi api pada work-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 dari AndroidManifest.xml ketika menggunakan inisialisasi on demand. (aosp/1167007)
  • Menambahkan peringatan lint saat enqueue() digunakan untuk PeriodicWorkRequest, bukan enqueueUniquePeriodicWork(). (aosp/1166032)

Perubahan API

  • ForegroundInfo sekarang mengharuskan Anda menentukan notificationId yang akan digunakan saat menggunakan ListenableWorker.setForegroundAsync(). Perubahan ini dapat menyebabkan gangguan. Hal ini memungkinkan Anda menjalankan beberapa Worker berdurasi panjang secara paralel. WorkManager juga mengelola masa pakai secara lebih baik untuk Notification 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 rangkaian WorkContinuation 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 membatalkan WorkRequest tanpa harus mendaftarkan komponen lain dalam AndroidManifest.xml. API ini sangat memudahkan pembatalan WorkRequest dari Notification. 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() menjadi ForegroundInfo.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() (atau CoroutineWorker#setForeground() untuk Kotlin). (aosp/1133636)

Perubahan API

  • containsKey API dalam Data diganti namanya menjadi hasKeyWithValueOfType. Metode ekstensi yang terkait dalam library ktx 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 representasi toString() yang jauh lebih berguna. (b/140945323)
  • Data kini memiliki metode equals() yang lebih baik. deepEquals untuk jenis Array 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 melalui setProgressAsync() API. Juga menambahkan setProgress API terkait yang melakukan suspend di CoroutineWorker dan setProgress di RxWorker yang menampilkan Single<Void>. Dengan API baru ini, Worker dapat menyampaikan informasi progres melalui WorkInfo yang memiliki getProgress API yang sesuai. (b/79481554)
  • Data memiliki containsKey() API yang dapat digunakan untuk memvalidasi bahwa data input ke Worker memiliki kunci dengan jenis yang diharapkan. (b/117136838)
  • Data sekarang dapat diserialisasi menggunakan Data.toByteArray() dan Data.fromByteArray(). Perlu diketahui bahwa tidak ada jaminan pembuatan versi dengan Data 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 melalui Configuration.setInputMergerFactory. (b/133273159)

Perubahan API

  • WorkManager akan menampilkan instance IllegalStateException jika WorkerFactory menampilkan instance ListenableWorker yang sebelumnya telah dipanggil. (b/139554406)
  • Pembaruan dokumentasi seputar pembatalan ListenableFuture dan callback onStopped() di ListenableWorker. (b/138413671)

Perbaikan bug

  • Penjadwal dalam proses sekarang mengabaikan WorkRequest dengan batasan idle. Permintaan ini kini hanya diambil oleh JobScheduler saat perangkat benar-benar dalam kondisi idle. (aosp/1089779)
  • TestScheduler kini dapat dengan benar menggunakan Executor 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 menggunakan JobScheduler 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 ke build.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:
    1. Nonaktifkan penginisialisasi otomatis.
    2. Implementasikan Configuration.Provider pada objek Application kustom Anda.
    3. Ubah semua referensi WorkManager.getInstance() menjadi WorkManager.getInstance(Context). Sebagai bagian dari perubahan ini, kami telah menghentikan WorkManager.getInstance(). Memanggil pengganti WorkManager.getInstance(Context) yang baru akan selalu lebih aman, meskipun Anda tidak melakukan inisialisasi sesuai permintaan.
  • PeriodicWorkRequest kini mendukung penundaan awal. Anda dapat menggunakan metode setInitialDelay pada PeriodicWorkRequest.Builder untuk menetapkan penundaan awal. b/111404867
  • Menambahkan kemampuan untuk menetapkan delegasi ke satu atau beberapa WorkerFactory yang terdaftar menggunakan DelegatingWorkerFactory. b/131435993
  • Menambahkan kemampuan untuk menyesuaikan Executor yang digunakan oleh WorkManager untuk semua pencatatan internalnya melalui Configuration.Builder.setTaskExecutor.
  • Menambahkan kemampuan untuk membuat class Worker dan ListenableWorker yang dapat diuji unit menggunakan TestWorkerBuilder dan TestListenableWorkerBuilder dalam artefak work-testing.
    • Perlu diperhatikan bahwa work-testing kini menggunakan Kotlin sebagai dependensi dan menyertakan beberapa ekstensi Kotlin secara default.
  • Menambahkan jumlah percobaan ke WorkInfo. b/127290461
  • Jenis Data kini dapat menyimpan dan mengambil byte dan array byte. Jenis ini TIDAK mengubah ukuran maksimal objek Data.
  • 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 menggunakan WorkerFactory yang benar saat membuat instance ListenableWorker. 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 metode setInitialDelay pada PeriodicWorkRequest.Builder untuk menetapkan penundaan awal. b/111404867

  • Menambahkan kemampuan untuk menetapkan delegasi ke satu atau beberapa WorkerFactory yang terdaftar menggunakan DelegatingWorkerFactory. b/131435993

  • Menambahkan kemampuan untuk menyesuaikan Executor yang digunakan oleh WorkManager untuk semua pencatatan internalnya melalui Configuration.Builder.setTaskExecutor.

  • Meningkatkan dokumentasi terkait WorkRequest.keepResultsForAtLeast (b/130638001), inisialisasi sesuai permintaan, dan PeriodicWorkRequest.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:
    1. Nonaktifkan penginisialisasi otomatis.
    2. Implementasikan Configuration.Provider pada objek Application kustom Anda.
    3. Ubah semua referensi WorkManager.getInstance() menjadi WorkManager.getInstance(Context). Sebagai bagian dari perubahan ini, kami telah menghentikan WorkManager.getInstance(). Memanggil pengganti WorkManager.getInstance(Context) yang baru akan selalu lebih aman, meskipun Anda tidak melakukan inisialisasi sesuai permintaan.
  • Menambahkan kemampuan untuk membuat class Worker dan ListenableWorker yang dapat diuji unit menggunakan TestWorkerBuilder dan TestListenableWorkerBuilder dalam artefak work-testing.
    • Perlu diperhatikan bahwa work-testing kini menggunakan Kotlin sebagai dependensi, tetapi juga menyertakan beberapa ekstensi Kotlin secara default.
  • Menambahkan jumlah percobaan ke WorkInfo. b/127290461
  • Jenis Data kini dapat menyimpan dan mengambil byte dan array byte. Jenis ini TIDAK mengubah ukuran maksimal objek Data.
  • CoroutineWorker.coroutineContext kini tidak digunakan lagi. Kolom ini salah ditulis sebagai CoroutineDispatcher; Anda tidak lagi memerlukannya karena sekarang Anda dapat mengakses sendiri coroutineContext yang diinginkan dalam isi fungsi yang melakukan penangguhan.
  • RxWorker.createWork() dan RxWorker.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

Untuk informasi tentang cara menggunakan ekstensi Kotlin, lihat dokumentasi KTX.
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/124546316

  • Worker yang menampilkan Exception yang tidak diperiksa sekarang ditandai dengan benar sebagai FAILED 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 pada 1.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, bukan 1.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 di ListenableWorker. 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 di ListenableWorker.

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, memperkenalkan RxWorker. Ini adalah ListenableWorker yang mengharapkan Single<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 dalam Result. Result kini menjadi "class terkunci" dengan tiga penerapan konkret, yang dapat Anda peroleh melalui Result.success() (atau Result.success(Data)), Result.failure() (atau Result.failure(Data)), dan Result.retry(). ListenableFuture kini akan menampilkan Result, bukan Payload. Worker tidak memiliki metode pengambil dan penyetel untuk Data output. Perubahan ini dapat menyebabkan gangguan.
  • Menambahkan Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit) dan Constraints.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() dan ListenableFuture.await().
  • Mengganti nama Operation.getException() menjadi Operation.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, dan OneTimeWorkRequest untuk menyederhanakan API. Untuk memperbaiki masalah build, Anda dapat menggabungkan vararg yang ada dengan Arrays.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; metode combine 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 melalui observeForever dilacak melalui WorkManager. Perbaikan ini merupakan backport dari perbaikan library Room. b/74477406
  • Data.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 menampilkan WorkInfo dengan State CANCELLED selama ListenableWorker.onStopped().
  • Memperlakukan Result null sebagai kegagalan di ListenableWorker. 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 dalam Result. Result kini menjadi "class terkunci" dengan tiga penerapan konkret, yang dapat Anda peroleh melalui Result.success() (atau Result.success(Data)), Result.failure() (atau Result.failure(Data)), dan Result.retry(). ListenableFuture kini akan menampilkan Result, bukan Payload. Worker tidak memiliki metode pengambil dan penyetel untuk Data output.
  • Menambahkan metode ekstensi Kotlin Operation.await() dan ListenableFuture.await().
  • Mengganti nama Operation.getException() menjadi Operation.getThrowable().
  • Class ContentUriTriggers dan metode yang mereferensikannya tidak lagi tersedia untuk penggunaan publik.
  • Menghapus metode vararg yang tersisa di WorkManager, WorkContinuation, dan OneTimeWorkRequest untuk menyederhanakan API. Untuk memperbaiki masalah build, Anda dapat menggabungkan vararg yang ada dengan Arrays.asList(...). Kami masih menyertakan versi argumen tunggal dari masing-masing metode.
  • Menghapus varian WorkContinuation.combine(OneTimeWorkRequest, *). Varian tersebut memberikan API yang membingungkan; metode combine 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 memperkenalkan CoroutineWorker baru.
  • WorkStatus diganti namanya menjadi WorkInfo. Semua varian metode getStatus yang sesuai telah diganti namanya menjadi varian getWorkInfo yang sesuai. Perubahan ini dapat menyebabkan gangguan.
  • ListenableWorker.onStopped() tidak lagi menerima argumen boolean jika WorkRequest dibatalkan. WorkManager tidak lagi membuat pembedaan ini. Perubahan ini dapat menyebabkan gangguan.
  • Paket androidx.work.test telah diganti namanya menjadi paket androidx.work.testing. Perubahan ini dapat menyebabkan gangguan.
  • Penyetel di Constraints tidak lagi menjadi bagian dari API publik. Perubahan ini dapat menyebabkan gangguan.
  • WorkerParameters.getTriggeredContentUris() dan WorkerParameters.getTriggeredContentAuthorities() sebelumnya menampilkan array. Sekarang, metode ini menampilkan Collections. Perubahan ini dapat menyebabkan gangguan.
  • ListenableWorker.onStartWork() diganti namanya menjadi ListenableWorker.startWork(). Perubahan ini dapat menyebabkan gangguan.
  • Konstruktor untuk WorkStatus tidak lagi menjadi bagian dari API publik. Perubahan ini dapat menyebabkan gangguan.
  • Configuration.getMaxJobSchedulerID() dan Configuration.getMinJobSchedulerID() secara berurutan diganti namanya menjadi Configuration.getMinJobSchedulerId() dan Configuration.getMaxJobSchedulerId(). Perubahan ini dapat menyebabkan gangguan.
  • Menambahkan banyak anotasi @NonNull ke API publik untuk meningkatkan ergonomi API.
  • Menambahkan WorkManager.enqueueUniqueWork() API untuk mengantrekan OneTimeWorkRequest yang unik tanpa harus membuat WorkContinuation.
  • Semua varian metode enqueue dan cancel pada WorkManager kini menampilkan jenis Operation baru. Perubahan ini dapat menyebabkan gangguan.
  • Semua varian enqueue tidak lagi menerima vararg untuk WorkRequest. Perubahan ini dapat menyebabkan gangguan. Sebagai gantinya, gunakan Collections. Anda dapat menggunakan Arrays.asList() untuk mengubah kode yang sudah ada. Kami melakukan ini untuk mengurangi antarmuka API dan jumlah metode.
  • Mencoba untuk melakukan initialize pada WorkManager lebih dari sekali per proses kini akan menampilkan IllegalStateException. Perubahan ini dapat menyebabkan gangguan.

Perbaikan Bug

  • WorkRequest.Builder dalam artefak work-runtime-ktx kini menggunakan ListenableWorker. 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 menjadi WorkInfo. Semua varian metode getStatus yang sesuai telah diganti namanya menjadi varian getWorkInfo yang sesuai.
  • ListenableWorker.onStopped() tidak lagi menerima argumen boolean jika WorkRequest dibatalkan. WorkManager tidak lagi membuat pembedaan ini.
  • Paket androidx.work.test telah diganti namanya menjadi paket androidx.work.testing.
  • Penyetel di Constraints tidak lagi menjadi bagian dari API publik.
  • WorkerParameters.getTriggeredContentUris() dan WorkerParameters.getTriggeredContentAuthorities() sebelumnya menampilkan array. Sekarang, metode ini menampilkan Collections.
  • ListenableWorker.onStartWork() diganti namanya menjadi ListenableWorker.startWork().
  • Konstruktor untuk WorkStatus tidak lagi menjadi bagian dari API publik.
  • Configuration.getMaxJobSchedulerID() dan Configuration.getMinJobSchedulerID() secara berurutan diganti namanya menjadi Configuration.getMinJobSchedulerId() dan Configuration.getMaxJobSchedulerId().
  • Semua varian metode enqueue dan cancel di WorkManager sekarang menampilkan jenis Operation baru.
  • Semua varian enqueue tidak lagi menerima vararg untuk WorkRequest.
  • Mencoba untuk melakukan initialize pada WorkManager lebih dari sekali per proses kini akan menampilkan IllegalStateException.

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 konstruktor Worker default. Perubahan API ini dapat menyebabkan gangguan.
  • Mengganti nama NonBlockingWorker menjadi ListenableWorker, 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 mengupdate ListenableFuture sesuai hasilnya. Penerapan referensi ListenableFuture disediakan dalam paket Futures di alpha02 (lihat di bawah pada bagian WorkManager).
    • Worker memperluas ListenableWorker dan masih beroperasi seperti sebelumnya, dengan metode Result doWork() abstrak.
    • Mengacak beberapa metode dan anggota dari Worker ke ListenableWorker.
    • Kami akan segera menyediakan penerapan referensi untuk ListenableWorker yang menggunakan coroutine Kotlin (setelah versi stabil dirilis) dan RxJava2.
  • Antarmuka WorkerFactory dan penerapan konkret DefaultWorkerFactory telah digabungkan menjadi class abstrak yang disebut WorkerFactory. Penerapan ini memastikan bahwa perilaku berbasis refleksi default dipanggil sebagai upaya terakhir untuk setiap instance WorkerFactory yang dibuat pengguna. Perubahan ini dapat menyebabkan gangguan.
  • Menghapus WorkManager.synchronous() dan WorkContinuation.synchronous() serta semua metode yang terkait. Menambahkan ListenableFuture<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 menampilkan void, tetapi sekarang akan menampilkan ListenableFuture<Void>. Anda dapat memanggil ListenableFuture.addListener(Runnable, Executor) atau ListenableFuture.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 kontrak Future.
    • Untuk mempertahankan kesamaan dengan metode getStatus* sinkron, kami menyediakan varian ListenableFuture, dan mengganti nama saat ini yang menampilkan LiveData agar secara eksplisit memiliki "LiveData" sebagai bagian dari nama tersebut (misalnya, getStatusesByIdLiveData(UUID)). Perubahan API ini dapat menyebabkan gangguan.

Perbaikan Bug

  • Memperbaiki masalah umum dari alpha09 terkait file androidx-annotations.pro duplikat. Anda dapat menghilangkan solusi ini dari catatan rilis sebelumnya dengan menghapus exclude '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 saat REPLACE dilakukan pada pekerjaan. b/116253486 dan b/116677275
  • WorkContinuation.combine() sekarang menerima satu WorkContinuation atau lebih, bukan dua atau lebih. b/117266752

Perubahan API yang Dapat Menyebabkan Gangguan

  • Menghapus semua metode dan class yang sebelumnya deprecated, terutama konstruktor Worker default.
  • Antarmuka WorkerFactory dan penerapan konkret DefaultWorkerFactory telah digabungkan menjadi class abstrak yang disebut WorkerFactory.
  • Menghapus WorkManager.synchronous() dan WorkContinuation.synchronous().
  • Metode WorkManager.getStatus*() sekarang menampilkan ListenableFuture. WorkManager.getStatus*LiveData() menampilkan LiveData.

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) ke Worker 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 menetapkan WorkerFactory sebagai bagian dari WorkManager.Configuration. Factory untuk fallback adalah DefaultWorkerFactory, yang cocok dengan perilaku WorkManager versi sebelumnya.
    • Konstruktor default untuk Worker dan NonBlockingWorker kini ditandai sebagai tidak digunakan lagi. Harap gunakan konstruktor baru (Worker(Context, WorkerParameters)) dan panggil super(Context, WorkerParameters); versi WorkManager berikutnya akan menghapus konstruktor default tersebut.
  • 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 diperlihatkannya NonBlockingWorker.
  • Menambahkan kemampuan untuk memicu pekerjaan yang dibatasi waktu di TestDriver melalui TestDriver.setInitialDelayMet(UUID) dan TestDriver.setPeriodDelayMet(UUID). b/113360060

Perubahan yang Dapat Menyebabkan Gangguan

  • Konstruktor default Worker dan NonBlockingWorker 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 pemrosesan JobScheduler. 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 dalam ConstraintTracker. b/112272753
  • Mengubah anotasi jenis nilai yang ditampilkan untuk Data.getBooleanArray(String) dan Data.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) dan Data.getIntArray(String) menjadi @Nullable, bukan @NonNull. b/112275229
  • Ekstensi Kotlin: menghentikan Map.toWorkData() dan menambahkan workDataOf(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 menggunakan WorkRequest.Builder#build(). b/111408337
  • Mengaktifkan penggunaan RescheduleReceiver hanya jika ada WorkRequest 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 menampilkan IllegalStateException. Ini adalah perubahan API yang dapat menyebabkan gangguan.
  • Menambahkan API baru, Configuration.Builder.setMinimumLoggingLevel(int), yang dapat mengontrol panjang WorkManager. Secara default, WorkManager mencatat Log.INFO dan di atasnya.
  • Mengubah tanda tangan Data.getString() sehingga tidak lagi menggunakan nilai default (secara implisit adalah null). Perubahan API ini dapat menyebabkan gangguan.
  • Menandai beberapa metode yang hanya diperlukan untuk penggunaan internal sebagai @hide. Proses ini mencakup konstruktor Constraints, Data.toByteArray(), dan Data.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 menggunakan JobScheduler. 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 mengantrekan WorkRequest 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 adalah null).
  • Menandai beberapa metode yang hanya diperlukan untuk penggunaan internal sebagai @hide. Proses ini mencakup konstruktor Constraints, Data.toByteArray(), dan Data.fromByteArray(byte[]).

Versi 1.0.0-alpha04

26 Juni 2018

Perbaikan Bug

  • PeriodicWorkRequest kini dijadwalkan ulang dengan benar saat menggunakan implementasi berbasis AlarmManager.
  • 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 versi 1.1.1-rc1.

Perubahan API

  • Menambahkan getStatusesSync(), versi sinkron dari WorkContinuation.getStatuses().
  • Worker memiliki kemampuan untuk membedakan pembatalan yang dimulai oleh pengguna dengan penghentian sementara yang diminta oleh sistem operasi. Worker.isStopped() akan menampilkan true jika penghentian jenis apa pun diminta. Worker.isCancelled() akan menampilkan true 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 ke JobScheduler atau AlarmManager. Dengan demikian, WorkManager tidak akan menggunakan semua slot JobScheduler yang tersedia.
  • Menambahkan Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId) yang membantu menentukan rentang ID pekerjaan JobScheduler yang aman untuk digunakan oleh WorkManager. b/79996760
  • Worker.getRunAttemptCount() menampilkan jumlah percobaan saat ini untuk Worker tertentu. b/79716516
  • WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) memungkinkan Anda mengantrekan PeriodicWorkRequest unik. b/79600647
  • WorkManager.cancelAllWork() membatalkan semua Worker. Library yang bergantung pada WorkManager dapat menanyakan kapan kali terakhir metode ini dipanggil menggunakan WorkManager.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 untuk Worker. Hal ini memungkinkan Anda menghapus WorkRequest tanpa tag atau saat id tidak tersedia. b/109572351

Perubahan yang Dapat Menyebabkan Gangguan

  • Mengganti nama Worker.WorkerResult menjadi Worker.Result.
  • Worker.onStopped kini memiliki parameter isCancelled tambahan yang ditetapkan ke true saat Worker dibatalkan secara eksplisit.

Versi 1.0.0-alpha02

24 Mei 2018

Perbaikan Bug

  • Memperbaiki NullPointerException pada State.isFinished(). b/79550068
  • Memperbaiki masalah yang menyebabkan Worker dijadwalkan ulang pada Application.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 di Data. b/79443878
  • Data.Builder.putAll() kini menampilkan instance Builder. b/79699162
  • Lebih banyak javadoc dan perbaikan dalam dokumentasi. b/79691663

Perubahan API

  • Worker dapat bereaksi saat dihentikan. Worker.isStopped() dapat digunakan untuk memeriksa apakah Worker telah dihentikan. Worker.onStopped() dapat digunakan untuk melakukan operasi pembersihan ringan.
  • Worker.getTags() API menampilkan Set tag yang terkait dengan Worker.
  • Menambahkan overload javax.time.Duration untuk API yang menggunakan kombinasi durasi dan TimeUnit. Ini dilindungi oleh @RequiresApi(26).
  • Ekstensi WorkManager telah dipindahkan dari paket androidx.work.ktx ke paket androidx.work. Ekstensi lama tidak lagi digunakan dan akan dihapus dalam versi yang akan datang.
  • Configuration.withExecutor() tidak digunakan lagi. Silakan gunakan Configuration.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.