Untuk mulai menggunakan WorkManager, impor library terlebih dahulu ke dalam project Android Anda.
Tambahkan dependensi berikut ke file build.gradle
aplikasi 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") }
Setelah menambahkan dependensi dan menyinkronkan project Gradle, langkah selanjutnya adalah menentukan beberapa pekerjaan yang harus dijalankan.
Menentukan pekerjaan
Pekerjaan ditentukan menggunakan
class Worker
. Metode doWork()
berjalan secara asinkron di thread latar belakang
yang disediakan oleh WorkManager.
Untuk membuat beberapa pekerjaan agar WorkManager dapat dijalankan, perluas class Worker
dan
ganti metode doWork()
. Misalnya, untuk membuat Worker
yang mengupload
gambar, Anda dapat melakukan cara berikut:
Kotlin
class UploadWorker(appContext: Context, workerParams: WorkerParameters): Worker(appContext, workerParams) { override fun doWork(): Result { // Do the work here--in this case, upload the images. uploadImages() // Indicate whether the work finished successfully with the Result return Result.success() } }
Java
public class UploadWorker extends Worker { public UploadWorker( @NonNull Context context, @NonNull WorkerParameters params) { super(context, params); } @Override public Result doWork() { // Do the work here--in this case, upload the images. uploadImages(); // Indicate whether the work finished successfully with the Result return Result.success(); } }
Result
yang ditampilkan dari doWork()
memberi tahu layanan WorkManager apakah
pekerjaan berhasil dan, jika terjadi kegagalan, apakah pekerjaan tersebut harus dicoba ulang
atau tidak.
Result.success()
: Pekerjaan berhasil diselesaikan.Result.failure()
: Pekerjaan gagal.Result.retry()
: Pekerjaan gagal dan harus dicoba di lain waktu sesuai dengan kebijakan coba lagi.
Membuat WorkRequest
Setelah ditentukan, pekerjaan Anda harus dijadwalkan dengan layanan WorkManager agar dapat berjalan. WorkManager menawarkan banyak fleksibilitas dalam cara Anda menjadwalkan pekerjaan. Anda dapat menjadwalkannya agar berjalan secara berkala selama interval waktu tertentu, atau Anda dapat menjadwalkannya untuk berjalan satu kali saja.
Apa pun pilihan untuk menjadwalkan pekerjaan, Anda akan selalu menggunakan
WorkRequest
. Sementara
Worker
menentukan unit pekerjaan,
WorkRequest
(dan
subkelasnya) menentukan bagaimana dan kapan harus dijalankan. Dalam kasus yang paling sederhana, Anda dapat
menggunakan
OneTimeWorkRequest
,
seperti yang ditunjukkan pada contoh berikut.
Kotlin
val uploadWorkRequest: WorkRequest = OneTimeWorkRequestBuilder<UploadWorker>() .build()
Java
WorkRequest uploadWorkRequest = new OneTimeWorkRequest.Builder(UploadWorker.class) .build();
Mengirim WorkRequest ke sistem
Terakhir, Anda harus mengirimkan WorkRequest
ke
WorkManager
menggunakan metode
enqueue()
.
Kotlin
WorkManager .getInstance(myContext) .enqueue(uploadWorkRequest)
Java
WorkManager .getInstance(myContext) .enqueue(uploadWorkRequest);
Waktu pasti eksekusi pekerja bergantung pada batasan yang digunakan dalam WorkRequest
dan pada pengoptimalan sistem.
WorkManager dirancang untuk memberikan perilaku terbaik berdasarkan batasan ini.
Langkah berikutnya
Panduan memulai ini hanya membahas sebagian kecil proses. WorkRequest
juga
dapat menyertakan informasi tambahan, seperti pada batasan mana
pekerjaan tersebut harus dijalankan, input ke pekerjaan, penundaan, dan kebijakan backoff untuk mencoba kembali
pekerjaan. Di bagian berikutnya, Tentukan permintaan pekerjaan, Anda akan mempelajari lebih lanjut tentang opsi ini secara lebih mendetail serta memahami cara menjadwalkan pekerjaan yang unik dan berulang.
Referensi lainnya
Selain dokumentasi panduan, ada beberapa blog, codelab, dan contoh kode yang tersedia untuk membantu Anda memulai.
Contoh
- WorkManagerSample, aplikasi pemrosesan image sederhana
- Sunflower, aplikasi demo yang mendemonstrasikan praktik terbaik dengan berbagai komponen arsitektur, termasuk WorkManager.
Codelab
- Menangani WorkManager (Kotlin) dan (Java)
- WorkManager Lanjutan (Kotlin)
Blog
- Memperkenalkan WorkManager
- Dasar-dasar WorkManager
- WorkManager dan Kotlin
- Periodisitas WorkManager
- Menyesuaikan WorkManager - Dasar-Dasar
- Menyesuaikan WorkManager dengan Dagger