Google berkomitmen untuk mendorong terwujudnya keadilan rasial bagi komunitas Kulit Hitam. Lihat caranya.

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 Saat Ini Kandidat Rilis Berikutnya Rilis Beta Rilis Alfa
24 Juni 2020 2.3.4 2.4.0-rc01 - -

Mendeklarasikan dependensi

Untuk menambahkan dependensi pada WorkManager, Anda harus menambahkan repositori Maven Google ke project Anda:

Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:

    dependencies {
      def work_version = "2.3.4"

        // (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"
      }
    

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 memiliki ide untuk meningkatkan kualitas library ini. Harap lihat masalah yang ada di library ini sebelum Anda membuat laporan baru. Anda dapat memberikan suara pada masalah yang ada dengan mengklik tombol bintang.

Melaporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Versi 2.4.0

Versi 2.4.0-rc01

24 Juni 2020

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

Perbaikan Bug

  • Penjadwal dalam proses kini menggunakan API yang lebih baik untuk menentukan nama proses. Hal ini berguna untuk mendukung aplikasi yang menggunakan banyak proses secara lebih baik. (aosp/1324732)

Versi 2.4.0-beta01

20 Mei 2020

androidx.work:work-gcm:2.4.0-beta01, androidx.work:work-runtime:2.4.0-beta01, androidx.work:work-runtime-ktx:2.4.0-beta01, androidx.work:work-rxjava2:2.4.0-beta01, dan androidx.work:work-testing:2.4.0-beta01 dirilis. Versi 2.4.0-beta01 berisi commit berikut.

Perbaikan Bug

  • Memperbaiki bug ketika ForegroundService tidak dihentikan setelah Worker latar depan terputus. (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 pabrik secara dinamis untuk didelegasikan, saat menggunakan DelegatingWorkerFactory. (b/156289105, aosp/1309745)
  • Menyelaraskan pelacakan untuk batasan BATTERY_NOT_LOW dengan platform. (aosp/1312583)

Versi 2.4.0-alpha03

29 April 2020

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

Fitur Baru

  • WorkManager kini mendukung RxJava 3. Untuk menggunakan RxJava 3, Anda harus menyertakan dependensi berikut: implementation "androidx.work:work-rxjava3:2.4.0-alpha03". (aosp/1277904)
  • Menambahkan aturan lint baru yang memastikan bahwa implementasi ListenableWorker sekarang akan menjadi public saat menggunakan WorkerFactory default. (aosp/1291262)

Perubahan API

  • Memanggil setProgressAsync() setelah ListenableWorker menyelesaikan eksekusi sekarang akan memberi tahu Exception melalui ListenableFuture. (aosp/1285494)
  • WorkQuery.Builder sekarang ditandai final. (aosp/1275037)
  • Metode factory WorkQuery.Builder, yaitu withStates, withTags, dan withUniqueWorkNames telah diganti namanya menjadi fromStates, fromTags, dan fromUniqueWorkNames secara berurutan. (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 berikut.

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 meng-kueri WorkInfo dengan menggunakan WorkQuery. Ini berguna saat developer ingin meng-kueri 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 dikembalikan. (aosp/1262743)

Perbaikan Bug

  • Memperbaiki aturan lint yang memeriksa durasi interval yang tidak valid untuk PeriodicWorkRequest. (aosp/1254846, b/152606442)

Versi 2.4.0-alpha01

4 Maret 2020

androidx.work:work-*:2.4.0-alpha01 dirilis. Versi 2.4.0-alpha01 berisi commit berikut.

Fitur Baru

  • Penjadwal dalam proses WorkManager sekarang semakin mampu. 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:

    • WorkRequests yang diselesaikan dalam 24 jam terakhir.
    • WorkRequests yang sedang BERJALAN.
    • WorkRequests Terjadwal. (aosp/1235501)
  • Aturan Lint baru yang menerapkan:

    • Penggunaan foregroundServiceType yang tepat saat 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

  • Tidak berlaku lagi setProgress() di RxWorker karena sebelumnya mengembalikan 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 berikut.

Perbaikan Bug

  • Memperbaiki bug yang akan menyebabkan beberapa instance dari Worker yang berjalan lama dijalankan, setelah melampaui jendela eksekusi 10 menit. (aosp/1247484, b/150553353)
  • Perbaikan untuk IssueRegistry lint WorkManager. Terima kasih @ZacSweers dari Slack, atas kontribusinya. (aosp/1217923)

Versi 2.3.3

Versi 2.3.3

4 Maret 2020

androidx.work:work-*:2.3.3 dirilis. Versi 2.3.3 berisi commit berikut.

Perbaikan Bug

Versi 2.3.2

Versi 2.3.2

19 Februari 2020

androidx.work:work-*:2.3.2 dirilis. Versi 2.3.2 berisi commit berikut.

Perbaikan Bug

  • Memperbaiki masalah saat WorkManager melampaui batas 100 tugas di JobScheduler dalam kasus tertentu. (aosp/1226859, b/149092520)
  • Perbaikan untuk kondisi race di ConstraintControllers. (aosp/1220100)
  • Menyempurnakan pengelolaan siklus proses Layanan latar depan untuk Pekerja yang berjalan lama. (aosp/1226295)
  • Menyempurnakan pengelolaan pembatalan Notifikasi untuk Pekerja yang berjalan lama atas pembatalan Pekerja. (aosp/1228346)

Versi 2.3.1

Versi 2.3.1

5 Februari 2020

androidx.work:work-*:2.3.1 dirilis. Versi 2.3.1 berisi commit berikut.

Perbaikan bug

  • Mengelola dengan lebih baik siklus proses Notification untuk Worker yang berjalan lama 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 berikut.

Perubahan penting sejak versi 2.2.0

  • Dukungan untuk pekerjaan penting atau jangka panjang melalui ListenableWorker#setForegroundAsync().
  • Dukungan untuk Progres Pekerja melalui ListenableWorker#setProgressAsync().
  • WorkManager kini memaketkan aturan lint tambahan sebagai bagian dari library yang membantu mengidentifikasi bug lebih awal.

Versi 2.3.0-rc01

8 Januari 2020

androidx.work:work-*:2.3.0-rc01 dirilis. Versi 2.3.0-rc01 berisi commit berikut.

Rilis ini sama persis dengan 2.3.0-beta02

Perbaikan bug

  • Artefak work-testing sekarang menentukan 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 berikut.

Fitur baru

  • Menambahkan pesan error yang lebih baik untuk pengecualian SQLite yang tidak dapat dipulihkan. (aosp/1185777)
  • Menambahkan aturan lint yang memastikan bahwa androidx.work.impl.WorkManagerInitializer penyedia konten dihapus 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 jangka 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 berikut.

Fitur baru

  • Menambahkan aturan lint baru yang mencegah error developer karena penerapan yang salah atas androidx.work.Configuration.Provider saat menggunakan inisialisasi sesuai permintaan. aosp/1164559

Versi 2.3.0-alpha03

23 Oktober 2019

androidx.work:work-*:2.3.0-alpha03 dirilis. Versi 2.3.0-alpha03 berisi commit berikut.

Fitur baru

  • Menambahkan API WorkManager.createCancelPendingIntent() yang memudahkan Anda 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 yang berlangsung lama 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 mencapai 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, Pekerja 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 pemberian 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(). Akan selalu lebih aman untuk memanggil pengganti WorkManager.getInstance(Context) yang baru, 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 proses memulai pada thread utama.
  • Memperbaiki potensi deadlock dalam pelacakan batasan. b/134361006
  • Secara preemptive membatalkan tugas tidak valid yang terkait dengan WorkManager. b/134058261
  • Menambahkan beberapa panggilan defensif ke JobScheduler API untuk perangkat yang menunjukkan gangguan fungsi.

Versi 2.1.0-alpha03

5 Juni 2019

androidx.work:*:2.1.0-alpha03 dirilis.

Perbaikan bug

  • Dokumentasi yang disempurnakan untuk PeriodicWorkRequest.
  • WorkManagerTestInitHelper kini menggunakan eksekutor latar belakang yang benar untuk pengujian.
  • Perbaikan untuk masalah SQLite saat menangani transaksi berukuran besar di perangkat tertentu. (b/130182503)
  • Dependensi WorkManager sekarang lebih mendetail. (b/133169148).
  • Mengatasi bug khusus OEM dalam penerapan JobScheduler saat menjadwalkan tugas menggunakan WorkManager.
  • Penyempurnaan pada penjadwal berbasis AlarmManager terkait masa aktif layanan yang sebelumnya menyebabkan error 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.

  • Penyempurnaan 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(). Akan selalu lebih aman untuk memanggil pengganti WorkManager.getInstance(Context) yang baru, 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 mengetahui informasi tentang penggunaan ekstensi Kotlin, baca dokumentasi ktx.
Dokumen referensi: Java
 dependencies {
    def work_version = "1.0.1"

    // (Java only)
    implementation "android.arch.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "android.arch.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "android.arch.work:work-rxjava2:$work_version"
    // optional - Test helpers
    androidTestImplementation "android.arch.work:work-testing:$work_version"
  }

Versi 1.0.1

Versi 1.0.1

9 April 2019

WorkManager 1.0.1 dirilis. Rilis ini identik dengan 1.0.1-rc01.

Perlu diperhatikan bahwa kami sangat menganjurkan pengguna untuk melakukan update ke WorkManager 2.x, karena ke depannya, library 1.x akan menerima sedikit sekali update. API baru juga tidak akan dirilis untuk library 1.x.

Versi 1.0.1-rc01

2 April 2019

WorkManager 1.0.1-rc01 dirilis. Versi ini berisi beberapa perbaikan bug.

Perbaikan Bug

  • Pengujian robolectric sekarang berjalan dengan baik pada WorkManager. b/122553577
  • Memperbaiki error kasus ekstrem dengan pelacakan batasan yang tidak dibersihkan pada pra-JobScheduler API. b/129226383
  • Memperbaiki penanganan StackOverflowError dengan rantai kerja yang panjang. b/129091233

Versi 1.0.0

Versi 1.0.0

05 Maret 2019

Ini adalah rilis stabil WorkManager 1.0.0. Versi WorkManager ini identik dengan 1.0.0-rc02.

Versi 1.0.0-rc02

21 Februari 2019

Ini adalah kandidat rilis kedua untuk rilis stabil WorkManager 1.0.0. Rilis ini berisi dua perbaikan bug.

Perbaikan Bug

  • Worker sekarang dijadwalkan dengan benar setelah aplikasi mengalami error. b/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

  • Menyempurnakan penjadwalan PeriodicWork untuk penerapan berbasis AlarmManager.
  • Memperbaiki masalah yang menyebabkan WorkManager gagal melacak batasan dengan benar saat menggunakan implementasi berbasis AlarmManager. b/123379508
  • Memperbaiki masalah yang menyebabkan WorkManager gagal mencoba ulang pekerjaan saat proses dihentikan selagi menggunakan implementasi berbasis AlarmManager. b/123329850
  • Memperbaiki masalah yang menyebabkan WorkManager membocorkan Wakelocks saat menggunakan implementasi berbasis AlarmManager.

Versi 1.0.0-beta03

25 Januari 2019

Rilis ini berisi beberapa perbaikan bug.

Perbaikan Bug

  • Kami memperkenalkan 1.0.0-beta02 regresi yang menyebabkan pekerjaan tidak dijalankan dengan benar pada beberapa situasi. b/123211993
  • Memperbaiki masalah yang menyebabkan pekerjaan tidak mengikuti waktu backoff dengan benar. b/122881597
  • Memperbaiki ConcurrentModificationException di perangkat yang menjalankan Android 5.1 (API atau) atau yang lebih rendah. 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 rendah. b/121345393
  • Memperbaiki eksekusi pekerjaan yang salah saat Batasan tidak tercapai di perangkat yang menjalankan Android 5.1 (API level 22) atau yang lebih rendah. b/122578012
  • Penanganan penyelesaian pekerjaan yang dioptimalkan menjadi lebih cepat pada beberapa kasus ekstrem. b/122358129
  • Menambahkan perubahan untuk mengatasi potensi kondisi race di antara beberapa instance LiveData yang digunakan WorkManager.
  • Beralih untuk menggunakan dependensi Room 1.1.1 dan 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 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 mencari cara untuk menambahkan 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 getter and setter 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

  • Penerapan pra-Marshmallow kini lebih andal dalam melakukan pemulihan dari penghentian proses tugas 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 null Result 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 mencari cara untuk menambahkan 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 getter and setter 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 dipahami dengan lebih mudah.

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.
  • Setter 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 WorkManager lebih dari sekali per proses sekarang akan menghasilkan IllegalStateException. Perubahan ini dapat menyebabkan gangguan.

Perbaikan Bug

  • WorkRequest.Builder dalam artefak work-runtime-ktx kini menggunakan ListenableWorker. Memperbaiki b/117666259
  • Pastikan waktu percobaan berikutnya untuk PeriodicWork ditetapkan ke masa mendatang. Memperbaiki b/118204399
  • Menghapus disk I/O potensial ketika menggunakan WorkManager saat memulai aplikasi. Memperbaiki 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.
  • Setter 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 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 fitur pelacak masalah 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* yang tersinkron, 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 atau lebih WorkContinuation, 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 lokasi independen OS 'META-INF/proguard/androidx-annotations.pro'", harap cantumkan berikut ini dalam file gradle sebagai solusi sementara selagi kami memperbaiki masalah di alpha10:

    android {
        packagingOptions {
            exclude 'META-INF/proguard/androidx-annotations.pro'
        }
    }

Perbaikan Bug

  • Menambahkan perbaikan lain yang diperlukan untuk error "100 jobs". b/115560696
  • Menambahkan beberapa perbaikan untuk error pembatas kunci asing karena kondisi race. b/114705286
  • Mendelegasikan panggilan ConstraintTrackingWorker.onStopped(boolean) 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 deduping LiveData secara internal.

Perubahan API

  • Anda kini dapat membuat instance Worker sendiri pada waktu proses dengan menetapkan WorkerFactory sebagai bagian dari WorkManager.Configuration. Setelan pabrik 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 di mana 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 beberapa 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 mengembalikan jumlah hasil yang tidak terbatas.
  • Pekerjaan yang telah menyelesaikan eksekusi kini dapat dengan tepat membatalkan semua salinan tertunda dari pekerjaan tersebut di Penjadwal lainnya. Hal ini menyebabkan batas pekerjaan JobScheduler terlampaui. b/111569265
  • Memperbaiki ConcurrentModificationException 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. Ini mencakup konstruktor Constraints, Data.toByteArray(), dan Data.fromByteArray(byte[]). Perubahan API ini dapat menyebabkan gangguan.

Perbaikan Bug

  • WorkManager tidak lagi bekerja selama kasus backup otomatis yang diketahui. Ini dapat mengakibatkan error. b/110564377
  • Memperbaiki penjadwalan ganda PeriodicWorkRequest saat 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 kinerja 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 penerapan berbasis AlarmManager.
  • Memperbaiki potensi ANR saat menjadwal ulang semua worker setelah penghentian paksa atau reboot. b/110507716
  • Menambahkan anotasi nullability ke berbagai WorkManager API. b/110344065
  • Mencatat pengecualian yang tidak tertangkap yang terjadi selama eksekusi Worker. b/109900862
  • Memungkinkan migrasi database destruktif jika Anda memutuskan untuk kembali ke versi WorkManager yang lebih lama. b/74633270
  • Memperbaiki error migrasi jika membuat tag implisit duplikat. Ini adalah masalah yang sangat langka yang terjadi hanya jika Anda menggunakan format tag implisit yang sama.

Versi 1.0.0-alpha03

19 Juni 2018

Perbaikan Bug

  • Memperbaiki kondisi race dalam penerapan berbasis AlarmManager. b/80346526.

  • Memperbaiki tugas duplikat saat menggunakan JobScheduler setelah reboot perangkat.

  • Tugas dengan pemicu URI Konten kini tetap ada meskipun perangkat di-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 WorkContinuation.getStatuses() yang tersinkron.
  • 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 tugas dibatalkan secara eksplisit. b/79632247
  • Menambahkan dukungan untuk JobParameters#getNetwork() pada API 28. Dukungan ini akan melalui Worker.getNetwork().
  • Menambahkan Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit) sehingga Anda dapat memberlakukan jumlah tugas yang dapat dikirim 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 tugas 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.
  • Penerapan AlarmManager kini melakukan pembersihan dengan benar saat semua pekerjaan yang tertunda selesai.
  • Memperbaiki kueri SQL pembersihan yang memengaruhi bahasa non-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. Hal ini dilindungi oleh @RequiresApi(26).
  • Ekstensi WorkManager telah dipindahkan dari paket androidx.work.ktx ke paket androix.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.