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

Pekerjaan unik

Pekerjaan unik merupakan konsep ampuh yang menjamin Anda hanya memiliki satu rantai pekerjaan dengan nama tertentu pada satu waktu. Berbeda dengan id, nama unik sifatnya dapat dibaca manusia dan ditentukan oleh developer, dan bukan dibuat secara otomatis oleh WorkManager. Tidak seperti tag, nama unik hanya dikaitkan dengan satu rantai pekerjaan.

Anda dapat membuat urutan pekerjaan unik dengan memanggil WorkManager.enqueueUniqueWork(String, ExistingWorkPolicy, OneTimeWorkRequest) atau WorkManager.enqueueUniquePeriodicWork(String, ExistingPeriodicWorkPolicy, PeriodicWorkRequest). Argumen pertama adalah nama unik - ini merupakan kunci yang kami gunakan untuk mengidentifikasi WorkRequest. Argumen kedua adalah kebijakan penyelesaian konflik, kebijakan ini menentukan hal yang harus dilakukan WorkManager jika ada rantai pekerjaan yang belum selesai dengan nama unik tersebut:

  • Membatalkan rantai yang sudah ada dan REPLACE dengan yang baru.
  • KEEP urutan yang baru dan mengabaikan permintaan baru.
  • APPEND urutan baru Anda ke urutan yang ada, menjalankan tugas pertama urutan baru setelah tugas terakhir urutan yang ada selesai. Anda tidak dapat menggunakan APPEND dengan PeriodicWorkRequest.

Pekerjaan unik berguna jika Anda memiliki tugas yang tidak boleh diantrekan beberapa kali. Misalnya, jika aplikasi perlu menyinkronkan datanya ke jaringan, Anda dapat mengantrekan urutan bernama "sinkronisasi", dan menentukan bahwa tugas baru harus diabaikan jika sudah ada urutan dengan nama tersebut. Urutan pekerjaan unik juga berguna jika Anda perlu membuat rantai tugas panjang secara bertahap. Misalnya, aplikasi pengeditan foto dapat memungkinkan pengguna mengurungkan rantai tindakan yang panjang. Setiap operasi urungkan mungkin perlu waktu beberapa saat, tetapi harus dilakukan dengan urutan yang benar. Dalam hal ini, aplikasi dapat membuat rantai "urungkan" dan menambahkan setiap operasi urungkan ke rantai tersebut sesuai kebutuhan.

Terakhir, jika perlu membuat rantai pekerjaan unik, Anda dapat menggunakan WorkManager.beginUniqueWork(String, ExistingWorkPolicy, OneTimeWorkRequest), bukan beginWith().