Android Academy · Pelajaran

Batasan dan Penjadwalan

Jalankan pekerjaan dalam kondisi yang tepat.

Pelajaran 3 dari 413 langkah

Batasan dan Penjadwalan adalah pelajaran Android Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Android Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Android Academy mencakup 4 pelajaran total.

Batasan dan Penjadwalan

Worker menentukan apa yang harus dilakukan. WorkRequest menentukan kapan dan dalam kondisi apa pekerjaan tersebut berjalan. Anda membuat permintaan, menambahkan batasan, lalu memasukkannya ke antrean.

Apa Itu Batasan

Constraints adalah kondisi yang harus terpenuhi sebelum pekerjaan Anda berjalan, seperti adanya koneksi jaringan atau perangkat sedang diisi daya. WorkManager menunggu hingga semua kondisi tersebut terpenuhi.

Membuat Batasan

Gunakan Constraints.Builder untuk menyatakan persyaratan Anda.

val constraints = Constraints.Builder()
    .setRequiredNetworkType(NetworkType.UNMETERED)
    .setRequiresCharging(true)
    .build()

Jenis Batasan Umum

Batasan yang sering digunakan meliputi:

  • setRequiredNetworkType (CONNECTED, UNMETERED, dan sebagainya)
  • setRequiresCharging
  • setRequiresBatteryNotLow
  • setRequiresDeviceIdle
  • setRequiresStorageNotLow

Membuat OneTimeWorkRequest

Untuk pekerjaan yang berjalan sekali, gunakan OneTimeWorkRequestBuilder dengan parameter kelas worker Anda, lalu tambahkan batasannya.

val request = OneTimeWorkRequestBuilder<UploadWorker>()
    .setConstraints(constraints)
    .build()

Meneruskan Data Input

Tambahkan data input ke permintaan dengan setInputData; worker membacanya melalui inputData.

val request = OneTimeWorkRequestBuilder<UploadWorker>()
    .setInputData(workDataOf("user_id" to "42"))
    .setConstraints(constraints)
    .build()

Memasukkan Pekerjaan ke Antrean

Dapatkan instance WorkManager dan panggil enqueue. WorkManager menyimpan permintaan tersebut dan menjalankannya ketika batasan terpenuhi.

WorkManager.getInstance(context).enqueue(request)

Kebijakan Penundaan

Ketika worker mengembalikan retry(), WorkManager menunggu sebelum mencoba lagi. Konfigurasikan strateginya dengan setBackoffCriteria, lalu pilih penundaan linear atau eksponensial.

val request = OneTimeWorkRequestBuilder<UploadWorker>()
    .setBackoffCriteria(
        BackoffPolicy.EXPONENTIAL,
        10, TimeUnit.SECONDS
    )
    .build()

Pekerjaan Unik

Untuk menghindari penjadwalan pekerjaan duplikat, gunakan enqueueUniqueWork dengan nama dan kebijakan konflik (KEEP, REPLACE, atau APPEND).

WorkManager.getInstance(context).enqueueUniqueWork(
    "sync_job",
    ExistingWorkPolicy.KEEP,
    request
)

Mengamati Status Pekerjaan

Anda dapat mengamati status permintaan (ENQUEUED, RUNNING, SUCCEEDED, FAILED) melalui getWorkInfoByIdFlow atau LiveData, yang berguna untuk menampilkan kemajuan di antarmuka pengguna.

WorkManager.getInstance(context)
    .getWorkInfoByIdFlow(request.id)
    .collect { info -> /* react to info.state */ }

Menambahkan Tag

Beri tag pada permintaan dengan addTag agar nanti Anda dapat mencari atau membatalkan sekelompok pekerjaan terkait berdasarkan tag, misalnya membatalkan semua pekerjaan "upload" sekaligus.

Pemeriksaan Singkat

Uji pemahaman Anda tentang batasan dan penjadwalan.

Ringkasan

Anda telah menjadwalkan pekerjaan dengan batasan:

  • Constraints.Builder menetapkan kondisi seperti jaringan dan pengisian daya
  • OneTimeWorkRequestBuilder membuat permintaan
  • enqueue / enqueueUniqueWork mengirimkannya
  • Konfigurasikan penundaan, amati status, dan beri tag pada pekerjaan

Berikutnya: pekerjaan berkala dan berantai.

Gratis untuk memulai

Belajar Kotlin dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
36
Pelajaran
152

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Batasan dan Penjadwalan” gratis?

Ya — teks lengkap “Batasan dan Penjadwalan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Android Academy, upgrade ke CoddyKit PRO. Kursus Android Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Batasan dan Penjadwalan”?

Jalankan pekerjaan dalam kondisi yang tepat. Kamu berlatih Android Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Android Academy?

Tidak diperlukan pengalaman sebelumnya. Android Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Batasan dan Penjadwalan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Android Academy ini?

Ya. Setiap pelajaran Android Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Kapan Menggunakan WorkManager
  2. Membuat Worker
  3. Batasan dan Penjadwalan
  4. Pekerjaan Berkala dan Berantai
← Kembali ke Android Academy