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

Memulai dengan WorkManager

Dengan WorkManager, Anda dapat dengan mudah menyiapkan tugas dan menyerahkannya ke sistem untuk dioperasikan dalam kondisi yang ditentukan. Untuk mempelajari lebih lanjut apakah WorkManager merupakan solusi yang tepat untuk tugas Anda, lihat panduan pemrosesan latar belakang.

Dalam panduan ini Anda akan belajar cara:

  • Menambahkan WorkManager ke project Android Anda
  • Membuat tugas latar belakang
  • Mengonfigurasikan cara dan waktu untuk menjalankan tugas
  • Menyerahkan tugas Anda ke sistem

Untuk informasi tentang fitur-fitur WorkManager, seperti menangani pekerjaan berulang, membuat rantai kerja dan membatalkan pekerjaan, lihat panduan cara kerja.

Menambahkan WorkManager ke project Android Anda

Untuk mengimpor library WorkManager ke project Android, tambahkan dependensi berikut ke file build.gradle aplikasi Anda:

dependencies {
  def work_version = "2.4.0"

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

Membuat tugas latar belakang

Suatu tugas ditentukan dengan class Worker. Metode doWork() berjalan sinkron pada thread latar belakang yang disediakan oleh WorkManager.

Untuk membuat tugas latar belakang, 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 task 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 task finished successfully with the Result
          return Result.success()
        }
    }
    

Result yang ditampilkan dari doWork() akan memberi tahu WorkManager apakah tugas:

  • berhasil diselesaikan melalui Result.success()
  • gagal melalui Result.failure()
  • perlu dicoba kembali di lain waktu melalui Result.retry()

Mengonfigurasikan cara dan waktu untuk menjalankan tugas

Saat Worker menentukan unit kerja, WorkRequest akan menentukan cara dan waktu untuk menjalankan pekerjaan. Pekerjaan mungkin bersifat sekali waktu atau berkala. Untuk WorkRequest sekali waktu, gunakan OneTimeWorkRequest, sedangkan PeriodicWorkRequest untuk pekerjaan berkala. Untuk informasi selengkapnya tentang cara menjadwalkan pekerjaan berulang, baca dokumentasi pekerjaan berulang.

Dalam hal ini, contoh paling sederhana untuk membuat WorkRequest bagi UploadWorker adalah:

Kotlin

    val uploadWorkRequest = OneTimeWorkRequestBuilder<UploadWorker>()
            .build()
    

Java

    OneTimeWorkRequest uploadWorkRequest = new OneTimeWorkRequest.Builder(UploadWorker.class)
            .build()
    

WorkRequest juga dapat menyertakan informasi tambahan, seperti pada batasan mana tugas tersebut harus berjalan, masukan ke pekerjaan, penundaan, dan kebijakan backoff untuk mencoba kembali pekerjaan. Opsi ini dijelaskan secara lebih detail dalam Panduan Menentukan Pekerjaan.

Menyerahkan tugas Anda ke sistem

Setelah menentukan WorkRequest, sekarang Anda dapat menjadwalkannya dengan 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 dalam batasan ini.

Langkah berikutnya